Forum und email

Проблемы Сборки

В этом разделе собраны наиболее общие ошибки, возникающие на этапе сборки.

  1. Я получил последнюю версию PHP, используя анонимный CVS, но в нём нет конфигурационного скрипта!
  2. У меня возникают проблемы при конфигурировании PHP для работы с Apache. Он говорит, что не может найти httpd.h, хотя файл находится точно там, где я сказал!
  3. Во время конфигурации PHP (./configure) вы наталкиваетесь на ошибку, схожую со следующим: checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
  4. Когда я пытаюсь запустить Apache, я получаю следующее сообщение: fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found
  5. Когда я запускаю configure, он говорит, что не может найти файлы include или библиотеку для GD, gdbm или какого-либо другого пакета!
  6. При компиляции файла language-parser.tab.c мне выдаются ошибки, говорящие yytname undeclared.
  7. Когда я запускаю make, похоже, он выполняется нормально, но на конечной линковке жалуется, что не может найти некоторые файлы.
  8. При компиляции PHP, он жалуется на некоторые неопределённые ссылки.
  9. Я не могу понять как собрать PHP c Apache 1.3.
  10. Я следовал всем шагам по установке модульной версии для Apache на Unix, но мои PHP скрипты выводятся в моём браузере или я получаю запрос сохранить файл.
  11. Говорится использовать: --activate-module=src/modules/php4/libphp4.a, но такой файл не существует, поэтому я заменил это на --activate-module=src/modules/php4/libmodphp4.a и оно не работает!? Что происходит?
  12. Когда я пытаюсь собрать Apache c PHP, в виде статического модуля, используя --activate-module=src/modules/php4/libphp4.a он говорит, что мой компилятор не ANSI-совместимый.
  13. Когда я пытаюсь собрать PHP используя --with-apxs, я получаю странное сообщение об ошибке.
  14. Во время выполнения make я получаю ошибки в microtime и множество всяких RUSAGE_.
  15. При компиляции 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', в чём дело?
  16. Я хочу обновить мой PHP. Где я могу найти строку ./configure, которая была использована для моей текущей PHP установки?
  17. При сборке PHP с библиотекой GD, либо выдаются странные ошибки компиляции, либо segfault при выполнении.
  18. При компиляции PHP я, кажется, получаю случайные ошибки, например она зависает. Я использую Solaris, если это имеет значение.
  19. Я получил последнюю версию 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
    
    Если вы используете csh-подобную оболочку (почему?), то это будет:
        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-