Проблемы Сборки
В этом разделе собраны наиболее общие ошибки, возникающие на этапе сборки.
- Я полÑÑил поÑледнÑÑ Ð²ÐµÑÑÐ¸Ñ PHP, иÑполÑзÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñй CVS, но в нÑм Ð½ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑионного ÑкÑипÑа!
- У Ð¼ÐµÐ½Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿Ñи конÑигÑÑиÑовании PHP Ð´Ð»Ñ ÑабоÑÑ Ñ Apache. Ðн говоÑиÑ, ÑÑо не Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¹Ñи httpd.h, Ñ Ð¾ÑÑ Ñайл Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑоÑно Ñам, где Ñ Ñказал!
- Ðо вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑигÑÑаÑии PHP (./configure) Ð²Ñ Ð½Ð°ÑалкиваеÑеÑÑ Ð½Ð° оÑибкÑ, ÑÑ Ð¾Ð¶ÑÑ Ñо ÑледÑÑÑим: checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
- Ðогда Ñ Ð¿ÑÑаÑÑÑ Ð·Ð°Ð¿ÑÑÑиÑÑ Apache, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ ÑледÑÑÑее ÑообÑение: fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found
- Ðогда Ñ Ð·Ð°Ð¿ÑÑÐºÐ°Ñ configure, он говоÑиÑ, ÑÑо не Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¹Ñи ÑÐ°Ð¹Ð»Ñ include или библиоÑÐµÐºÑ Ð´Ð»Ñ GD, gdbm или какого-либо дÑÑгого пакеÑа!
- ÐÑи компилÑÑии Ñайла language-parser.tab.c мне вÑдаÑÑÑÑ Ð¾Ñибки, говоÑÑÑие yytname undeclared.
- Ðогда Ñ Ð·Ð°Ð¿ÑÑÐºÐ°Ñ make, Ð¿Ð¾Ñ Ð¾Ð¶Ðµ, он вÑполнÑеÑÑÑ Ð½Ð¾ÑмалÑно, но на конеÑной линковке жалÑеÑÑÑ, ÑÑо не Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¹Ñи некоÑоÑÑе ÑайлÑ.
- ÐÑи компилÑÑии PHP, он жалÑеÑÑÑ Ð½Ð° некоÑоÑÑе неопÑеделÑннÑе ÑÑÑлки.
- Я не Ð¼Ð¾Ð³Ñ Ð¿Ð¾Ð½ÑÑÑ ÐºÐ°Ðº ÑобÑаÑÑ PHP c Apache 1.3.
- Я Ñледовал вÑем Ñагам по ÑÑÑановке модÑлÑной веÑÑии Ð´Ð»Ñ Apache на Unix, но мои PHP ÑкÑипÑÑ Ð²ÑводÑÑÑÑ Ð² моÑм бÑаÑзеÑе или Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð·Ð°Ð¿ÑÐ¾Ñ ÑÐ¾Ñ ÑаниÑÑ Ñайл.
- ÐовоÑиÑÑÑ Ð¸ÑполÑзоваÑÑ: --activate-module=src/modules/php4/libphp4.a, но Ñакой Ñайл не ÑÑÑеÑÑвÑеÑ, поÑÑÐ¾Ð¼Ñ Ñ Ð·Ð°Ð¼ÐµÐ½Ð¸Ð» ÑÑо на --activate-module=src/modules/php4/libmodphp4.a и оно не ÑабоÑаеÑ!? ЧÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ?
- Ðогда Ñ Ð¿ÑÑаÑÑÑ ÑобÑаÑÑ Apache c PHP, в виде ÑÑаÑиÑеÑкого модÑлÑ, иÑполÑзÑÑ --activate-module=src/modules/php4/libphp4.a он говоÑиÑ, ÑÑо мой компилÑÑÐ¾Ñ Ð½Ðµ ANSI-ÑовмеÑÑимÑй.
- Ðогда Ñ Ð¿ÑÑаÑÑÑ ÑобÑаÑÑ PHP иÑполÑзÑÑ --with-apxs, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ ÑÑÑанное ÑообÑение об оÑибке.
- Ðо вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ make Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¾Ñибки в microtime и множеÑÑво вÑÑÐºÐ¸Ñ RUSAGE_.
- ÐÑи компилÑÑии PHP Ñ MySQL, configure вÑполнÑеÑÑÑ Ð½Ð¾ÑмалÑно, но во вÑÐµÐ¼Ñ make Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¾ÑÐ¸Ð±ÐºÑ Ñипа ÑледÑÑÑего: ext/mysql/libmysql/my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/libmysql/my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp', в ÑÑм дело?
- Я Ñ Ð¾ÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð¼Ð¾Ð¹ PHP. Ðде Ñ Ð¼Ð¾Ð³Ñ Ð½Ð°Ð¹Ñи ÑÑÑÐ¾ÐºÑ ./configure, коÑоÑÐ°Ñ Ð±Ñла иÑполÑзована Ð´Ð»Ñ Ð¼Ð¾ÐµÐ¹ ÑекÑÑей PHP ÑÑÑановки?
- ÐÑи ÑбоÑке PHP Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой GD, либо вÑдаÑÑÑÑ ÑÑÑаннÑе оÑибки компилÑÑии, либо segfault пÑи вÑполнении.
- ÐÑи компилÑÑии PHP Ñ, кажеÑÑÑ, полÑÑÐ°Ñ ÑлÑÑайнÑе оÑибки, напÑÐ¸Ð¼ÐµÑ Ð¾Ð½Ð° завиÑаеÑ. Я иÑполÑзÑÑ Solaris, еÑли ÑÑо Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение.
-
Я получил последнюю версию PHP, используя анонимный CVS, но в нём нет конфигурационного скрипта!
-
Вам нужен установленный пакет GNU autoconf для того, чтобы сгенерировать конфигурационный скрипт из configure.in. После получения исходников с CVS сервера просто запустите ./buildconf в директории верхнего уровня. (Также, если вы запускаете configure без опции --enable-maintainer-mode, то конфигурационный скрипт не будет перестроен автоматически при изменении файла configure.in, поэтому вам необходимо делать это вручную, когда вы заметите, что configure.in изменился. Один из симптомов - появление таких вещей как @VARIABLE@ в вашем Makefile после выполнения configure или config.status)
-
У меня возникают проблемы при конфигурировании PHP для работы с Apache. Он говорит, что не может найти httpd.h, хотя файл находится точно там, где я сказал!
-
Для configure/setup скрипта вам необходимо указать директорию верхнего уровня, в которой находятся исходники Apache. Это означает, что вам надо задать --with-apache=/path/to/apache, а не --with-apache=/path/to/apache/src.
-
Во время конфигурации PHP (./configure) вы наталкиваетесь на ошибку, схожую со следующим:
checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
-
Не забудьте внимательно прочитать инструкции по установке и заметьте, что для компиляции PHP вам нужны оба flex и bison установленные. В зависимости от ваших настроек, установите bison и flex либо из исходников, либо из RPM пакетов.
-
Когда я пытаюсь запустить Apache, я получаю следующее сообщение:
fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found
-
Эта ошибка обычно появляется, если ядро Apache было скомпилировано как разделяемая библиотека DSO. Попробуйте переконфигурировать Apache, используя, по крайней мере, следующие флаги:
--enable-shared=max --enable-rule=SHARED_CORE
Для более подробной информации читайте файл INSTALL верхнего уровня или » страницу руководства Apache по DSO.
-
Когда я запускаю configure, он говорит, что не может найти файлы include или библиотеку для GD, gdbm или какого-либо другого пакета!
-
Вы можете сделать так, что скрипт configure будет искать файлы заголовков или библиотеки в нестандартных местах, задав дополнительные флаги для С препроцессора и компоновщика, такие как:
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
-
При компиляции файла language-parser.tab.c мне выдаются ошибки, говорящие yytname undeclared.
-
Вам необходимо обновить вашу версию Bison. Последнюю версию можно найти на » https://www.gnu.org/software/bison/bison.html.
-
Когда я запускаю make, похоже, он выполняется нормально, но на конечной линковке жалуется, что не может найти некоторые файлы.
-
Некоторые старые версии make ошибочно не помещают скомпилированые файлы в поддиректорию functions в той же директории. Попробуйте выполнить cp *.o functions и затем перезапустить make. Если это помогло, то вам действительно надо установить свежую версию GNU make.
-
При компиляции PHP, он жалуется на некоторые неопределённые ссылки.
-
Посмотрите на строку для компоновки и убедитесь, что все нужные библиотеки добавлены в конце. Часто забывают '-ldl' и библиотеки, необходимые для поддержки подключенных баз данных.
Если вы компонуете с Apache 1.2.x, не забыли ли вы добавить соответствующую информацию в строку EXTRA_LIBS в файле Configuration и перезапустить Configure скрипт для Apache? Смотрите файл » INSTALL для дополнительной информации.
Некоторые люди также сообщают, что при компоновке с Apache им пришлось добавить '-ldl' сразу после libphp4.a.
-
Я не могу понять как собрать PHP c Apache 1.3.
-
На самом деле это очень легко. Аккуратно выполните следующие шаги:
- Получите последний дистрибутив Apache 1.3 с » https://www.apache.org/dist/httpd/.
- Раскомпрессуйте и разархивируйте (ungzip/untar) его где-нибудь, для примера в /usr/local/src/apache-1.3.
- Скомпилируйте PHP, сперва запустив ./configure --with-apache=/<path>/apache-1.3 (замените <path> на ваш настоящий путь к директории apache-1.3.)
- Введите make с последующим make install для того, чтобы построить PHP и скопировать все необходимые файлы в дерево дистрибутива Apache.
- Перейдите в вашу директорию /<path>/apache-1.3/src и отредактируйте файл Configuration. Добавьте в файл: AddModule modules/php4/libphp4.a.
- Введите: ./configure и затем make.
- Теперь у вас должен быть бинарник httpd, поддерживающий PHP!
Замечание: Вы также можете использовать новый скрипт ./configure в Apache. Смотрите инструкции в файле README.configure, входящем в ваш дистрибутив Apache. Также загляните в файл INSTALL из дистрибутива PHP.
-
Я следовал всем шагам по установке модульной версии для Apache на Unix, но мои PHP скрипты выводятся в моём браузере или я получаю запрос сохранить файл.
-
Это означает, что по какой-то причине модуль PHP не вызывается. Перед тем как обращаться за помощью, проверьте три вещи:
- Убедитесь, что запускаемый вами бинарник httpd действительно новый, только что построенный httpd. Для этого попробуйте запустить: /path/to/binary/httpd -l Если вы не видете mod_php4.c в списке, то вы запускаете не тот бинарник. Найдите и установите правильный бинарник.
- Убедитесь, что вы добавили правильный Mime Type в один из ваших Apache .conf файлов. Это должно быть: AddType application/x-httpd-php3 .php3 (for PHP 3) или AddType application/x-httpd-