Проблемы Построения РНР
| |||||||||||
|
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
Если вы используете csh-вариант для вашей оболочки логина (почему?), это может быть:
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
4. При компиляции файла language-parser.tab.c он выдаёт мне ошибки, где говорится, что yytname undeclared.
Вам необходимо обновить вашу версию Bison. Вы можете найти последнюю версию по
адресу
Некоторые старые версии make некорректно помещают откомпилированные версии файлов в functions-директории в ту же самую директорию. Попытайтесь запустить cp *.o functions, а затем перезапустить make и посмотреть, поможет ли это. Если помогло, вам действительно необходимо обновить до последней версии GNU make.
6. При компоновке/linking PHP он жалуется на наличие undefined-ссылок.
Посмотрите на строку компоновки и убедитесь, что все необходимые библиотеки подключены в конце. Обычно упускают ’-ldl’ и любые библиотеки, необходимые для поддержки баз данных, которую вы включили.
Если вы компоновали с Apache 1.2.x, не забыли ли вы добавить нужную
информацию в строку EXTRA_LIBS Configuration-файла и перезапустить Configure-скрипт
Apache’а? См.
Многие также сообщают, что они добавили ’-ldl’ сразу после libphp4.a при компоновке с Apache.
Это в действительности довольно легко. Внимательно выполните следующие шаги:
Получите последний дистрибутив Apache 1.3 с http://www.apache.org/dist/.
Ungzip и untar его где-нибудь, например, в /usr/local/src/apache-1.3.
Скомпилируйте PHP, запустив сначала ./configure --with-apache=/<path>/apache-1.3 (замените <path> не реальный путь к вашей директории apache-1.3.
Введите make и затем make install для построения/build PHP и скопируйте нужные файлы в дерево дистрибутива Apache.
Измените директории на вашу директорию /<path>/apache-1.3/src и отредактируйте файл Configuration. Добавьте в этот файл: AddModule modules/php4/libphp4.a.
-
Введите: ./Configure с последующим make.
-
Вы не должны иметь httpd binary с включённым PHP!
Примечание: вы можете также использовать новый Apache ./configure-скрипт. См инструкции в файле README.configure, который является частью вашего дистрибутива Apache. Просмотрите также файл INSTALL в дистрибутиве PHP.
Это означает, что PHP-модуль не вызывается по какой-то причине.
Проверьте три вещи, прежде чем запросить дальнейшей помощи:
-
Убедитесь, что httpd binary, запущенный у вас, действительно является новым httpd-экзешником, только что построенным вами. Для этого попытайтесь запустить: /path/to/binary/httpd -l
Если вы не видите mod_php4.c, то у вас запущен не тот binary. Найдите и установите корректный binary.
Убедитесь, что вы добавили корректный Mime Type в один из .conf-файлов Apache. Это должен быть: AddType application/x-httpd-php3 .php3 (для PHP 3)
или AddType application/x-httpd-php .php (для PHP 4)
Также убедитесь, что эта строка AddType не спрятана внутри блока <Virtualhost> или <Directory>, что предотвращает его применение к местоположению вашего тестового скрипта.
Наконец, размещение фалов конфигурации Apache изменилось для версии Apache 1.3. Вы должны убедиться, что файл конфигурации, в который вы добавили строку AddType, действительно читается. Вы можете намеренно поместить синтаксическую ошибку в файл httpd.conf или сделать какое-нибудь иное очевидное изменение, которое поможет понять, читается ли этот файл корректно.
9. Сказано использовать --activate-module=src/modules/php4/libphp4.a, но этот файл не существует, поэтому я вместо него сделал --activate-module=src/modules/php4/libmodphp4.a, а он не работает!? В чём причина?
Обратите внимание, что существование файла libphp4.a не поддерживается. Процесс Аpache создаст его!
Это вводящее в заблуждение сообщение об ошибке от Apache, которое устранено в последующих версиях.
11. Когда я пытаюсь построить PHP с использованием --with-apxs, я получаю странные сообщения об ошибках.
Здесь нужно проверить три вещи. Во-первых, когда, по некоторым причинам, Apache строит Perl-скрипт apxs, он иногда заканчивает построение без нужных переменных компилятора и флагов. Найдите ваш скрипт apxs (попробуйте команду which apxs, она может найти его в /usr/local/apache/bin/apxs или в /usr/sbin/apxs). Откройте его и проверьте строки наподобие этих:
my $CFG_CFLAGS_SHLIB = ’ ’; # заменено через Makefile.tmpl my $CFG_LD_SHLIB = ’ ’; # заменено через Makefile.tmpl my $CFG_LDFLAGS_SHLIB = ’ ’; # заменено через Makefile.tmpl |
Если вы видите это, вы нашли проблему. В строках могут содержаться пробелы или другие некорректные значения, такие как ’q()’. Измените эти строки так:
my $CFG_CFLAGS_SHLIB = ’-fpic -DSHARED_MODULE’; # заменено через Makefile.tmpl my $CFG_LD_SHLIB = ’gcc’; # заменено через Makefile.tmpl my $CFG_LDFLAGS_SHLIB = q(-shared); # заменено через Makefile.tmpl |
Вторая проблема может появиться только в Red Hat 6.1 и 6.2. Скрипт apxs, поставляемый в Red Hat, нарушен. Найдите такую строку:
my $CFG_LIBEXECDIR = ’modules’; # заменено через APACI install |
Если нашли, измените её так:
my $CFG_LIBEXECDIR = ’/usr/lib/apache’; # заменено через APACI install |
Наконец, если вы реконфигурировали/реинсталировали Apache, добавьте make clean в процесс после ./configure и перед make.
В ходе выполнения части make процесса инсталяции, если вы обнаружите проблемы, которые выглядят примерно так:
microtime.c: In function `php_if_getrusage’: microtime.c:94: storage size of `usg’ isn’t known microtime.c:97: `RUSAGE_SELF’ undeclared (first use in this function) microtime.c:97: (Each undeclared identifier is reported only once microtime.c:97: for each function it appears in.) microtime.c:103: `RUSAGE_CHILDREN’ undeclared (first use in this function) make[3]: *** [microtime.lo] Error 1 make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard’ make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard’ make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/master/php-4.0.1/ext’ make: *** [all-recursive] Error 1 |
это будет означать, что ваша система нарушена. Вам нужно исправить ваши файлы /usr/include, установив пакет glibc-devel, соответствующий вашей glibc. В РНР ничего здесь исправлять не надо. Чтобы самостоятельно проверить это, сделайте простой тест:
$ cat >test.c <<X #include <sys/resource.h> X $ gcc -E test.c >/dev/null |
Если вам накидает ошибок, вы будете знать, что это неприятности из ваших include-файлов.
13. Я хочу обновить мой PHP. Где я могу найти строку ./configure, которая использовалась для построения установки моей текущей версии PHP?
Просмотрите файл config.nice в исходном дереве вашей текущей инсталяции PHP или, если это невозможно, просто выполните скрипт:
<?php phpinfo(); ?> |
| ||||||
|
Нет комментариев. Ваш будет первым!