| |||||||||||
Глава 49. Проблемы построения РНРВ этом разделе собраны типичные ошибки, возникающие во время построения/build РНР.
1. У меня последняя версия PHP, использующая службу анонимного CVS, но нет скрипта конфигурации! Вам необходимо иметь установленный пакет GNU autoconf, чтобы вы могли генерировать скрипт конфигурации из configure.in. Просто запустите ./buildconf в директории верхнего уровня после получения исходников с CVS-сервера. (Также, если вы не запустили configure с опцией --enable-maintainer-mode, скрипт configure не будет автоматически перестроен/rebuilt, когда файл configure.in обновляется, поэтому вы обязательно должны сделать это вручную, если configure.in изменяется. Один из симптомов этого - если вы находите что-нибудь типа @VARIABLE@ в вашем Makefile после конфигурирования, или если config.status работает.) 2. У меня проблемы с конфигурирование PHP для работы с Apache. Он говорит, что не может найти httpd.h, но это файл находится там, где я ему указал! Вы должны сообщить configure/setup-скрипту расположение верхнего уровня вашего дерева исходников Apache. Это означает, что вы должны специфицировать --with-apache=/path/to/apache, а не --with-apache=/path/to/apache/src. 3. Когда я запускаю configure, он говорит, что не может найти include-файлы или библиотеки для GD, gdbm или ещё какого-нибудь пакета! Вы можете сделать так, чтобы configure-скрипт искал header-файлы и библиотеки в нестандартном месте, специфицировав дополнительные флаги для передачи их препроцессору C и компоновщику/linker таким образом:
Если вы используете csh-вариант для вашей оболочки логина (почему?), это может быть:
4. При компиляции файла language-parser.tab.c он выдаёт мне ошибки, где говорится, что yytname undeclared. Вам необходимо обновить вашу версию Bison. Вы можете найти последнюю версию по адресу ftp://ftp.gnu.org/pub/gnu/bison/ 5. Когда я запускаю make, всё вроде идёт нормально, но затем - облом при попытке компоновки окончательного приложения, и он жалуется, что не может найти некоторые файлы. Некоторые старые версии make некорректно помещают откомпилированные версии файлов в functions-директории в ту же самую директорию. Попытайтесь запустить cp *.o functions, а затем перезапустить make и посмотреть, поможет ли это. Если помогло, вам действительно необходимо обновить до последней версии GNU make. 6. При компоновке/linking PHP он жалуется на наличие undefined-ссылок. Посмотрите на строку компоновки и убедитесь, что все необходимые библиотеки подключены в конце. Обычно упускают '-ldl' и любые библиотеки, необходимые для поддержки баз данных, которую вы включили. Если вы компоновали с Apache 1.2.x, не забыли ли вы добавить нужную информацию в строку EXTRA_LIBS Configuration-файла и перезапустить Configure-скрипт Apache'а? См. INSTALL-файл, который поставляется с дистрибутивом. Многие также сообщают, что они добавили '-ldl' сразу после libphp4.a при компоновке с Apache. 7. Я не могу выяснить, как построить build PHP с Apache 1.3. Это в действительности довольно легко. Внимательно выполните следующие шаги:
Примечание: Вы можете также использовать новый Apache ./configure-скрипт. См инструкции в файле README.configure, который является частью вашего дистрибутива Apache. Просмотрите также файл INSTALL в дистрибутиве PHP. 8. Я выполнил все шаги по установке Apache-модуля версии для UNIX, а мои PHP-скрипты выводятся в браузере, или мне задаётся вопрос, сохранить ли файл. Это означает, что PHP-модуль не вызывается по какой-то причине.
9. Сказано использовать --activate-module=src/modules/php4/libphp4.a, но этот файл не существует, поэтому я вместо него сделал --activate-module=src/modules/php4/libmodphp4.a, а он не работает!? В чём причина? Обратите внимание, что существование файла libphp4.a не поддерживается. Процесс Аpache создаст его! 10. Когда я пытаюсь построить Apache с PHP как static-модулем путём использования --activate-module=src/modules/php4/libphp4.a, он мне говорит, что мои компилятор несовместим с ANSI. Это вводящее в заблуждение сообщение об ошибке от Apache, которое устранено в последующих версиях. 11. Когда я пытаюсь построить PHP с использованием --with-apxs, я получаю странные сообщения об ошибках. Здесь нужно проверить три вещи. Во-первых, когда, по некоторым причинам, Apache строит Perl-скрипт apxs, он иногда заканчивает построение без нужных переменных компилятора и флагов. Найдите ваш скрипт apxs (попробуйте команду which apxs, она может найти его в /usr/local/apache/bin/apxs или в /usr/sbin/apxs). Откройте его и проверьте строки наподобие этих:
Если вы видите это, вы нашли проблему. В строках могут содержаться пробелы или другие некорректные значения, такие как 'q()'. Измените эти строки так:
Вторая проблема может появиться только в Red Hat 6.1 и 6.2. Скрипт apxs, поставляемый в Red Hat, нарушен. Найдите такую строку:
Если нашли, измените её так:
Наконец, если вы реконфигурировали/реинсталировали Apache, добавьте make clean в процесс после ./configure и перед make. 12. В процессе make, я получаю ошибки в microtime и много RUSAGE_. В ходе выполнения части make процесса инсталяции, если вы обнаружите проблемы, которые выглядят примерно так:
это будет означать, что ваша система нарушена. Вам нужно исправить ваши файлы /usr/include, установив пакет glibc-devel, соответствующий вашей glibc. В РНР ничего здесь исправлять не надо. Чтобы самостоятельно проверить это, сделайте простой тест:
Если вам накидает ошибок, вы будете знать, что это неприятности из ваших include-файлов. 13. Я хочу обновить мой PHP. Где я могу найти строку ./configure, которая использовалась для построения установки моей текущей версии PHP? Просмотрите файл config.nice в исходном дереве вашей текущей инсталяции PHP или, если это невозможно, просто выполните скрипт:
| |||||||||||
|