Установка
Этот раздел содержит общие вопросы по установке PHP. PHP доступен практически для любой ОС (за исключением, может быть, MacOS предшествующей OSX) и любого web сервера.
Для установки PHP следуйте инструкциям в файле » INSTALL из дистрибутива. Пользователи Windows также должны прочитать » install.txt. И здесь есть некоторые полезные советы для пользователей Windows.
- ÐоÑÐµÐ¼Ñ Ñ Ð½Ðµ должен иÑполÑзоваÑÑ Apache2 Ñ Ð¿Ð¾ÑоковÑм MPM в ÑкÑплÑаÑаÑии?
- Unix/Windows: Ðде должен Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ñайл php.ini?
- Unix: Я ÑÑÑановил PHP, но каждÑй Ñаз пÑи загÑÑзке докÑменÑа Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ ÑообÑение 'Document Contains No Data' (ÐокÑÐ¼ÐµÐ½Ñ Ðе СодеÑÐ¶Ð¸Ñ ÐаннÑÑ )! ЧÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ?
- Unix: Я ÑÑÑановил PHP, иÑполÑзÑÑ RPMS, но Apache не обÑабаÑÑÐ²Ð°ÐµÑ PHP ÑÑÑаниÑÑ! ЧÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ?
- Unix: Я ÑÑÑановил PHP 3 иÑполÑзÑÑ RPMS, но он не компилиÑÑеÑÑÑ Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой нÑжной мне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ! ЧÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ?
- Unix: Я ÑÑÑановил заплаÑÐºÑ Ð² Apache Ð´Ð»Ñ ÑаÑÑиÑений FrontPage и неожиданно PHP пеÑеÑÑал ÑабоÑаÑÑ. ÐеÑжели PHP не ÑовмеÑÑим Ñ FrontPage ÑаÑÑиÑениÑми Ð´Ð»Ñ Apache?
- Unix/Windows: Я ÑÑÑановил PHP, но когда Ñ Ð¿ÑÑаÑÑÑ Ð²ÑзваÑÑ PHP ÑкÑÐ¸Ð¿Ñ Ð¸Ð· моего бÑаÑзеÑа, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¿ÑÑÑой ÑкÑан.
- Unix/Windows: Я ÑÑÑановил PHP, но когда Ñ Ð¿ÑÑаÑÑÑ Ð²ÑзваÑÑ PHP ÑкÑÐ¸Ð¿Ñ Ð¸Ð· моего бÑаÑзеÑа, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¾ÑÐ¸Ð±ÐºÑ ÑеÑвеÑа 500.
- ÐекоÑоÑÑе опеÑаÑионнÑе ÑиÑÑемÑ: Я ÑÑÑановил PHP без оÑибок, но когда Ñ Ð¿ÑÑаÑÑÑ Ð·Ð°Ð¿ÑÑÑиÑÑ Apache, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¾Ñибки "undefined symbol" (неопÑеделÑннÑй Ñимвол): [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
- Windows: Я ÑÑÑановил PHP, но когда Ñ Ð¿ÑÑаÑÑÑ Ð²ÑзваÑÑ PHP ÑкÑÐ¸Ð¿Ñ Ð¸Ð· моего бÑаÑзеÑа, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð¾ÑибкÑ: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
- Windows: Я Ñледовал вÑем инÑÑÑÑкÑиÑм, но Ñак и не Ñмог заÑÑавиÑÑ PHP и IIS ÑабоÑаÑÑ Ð²Ð¼ÐµÑÑе!
- Ðогда PHP запÑÑкаеÑÑÑ ÐºÐ°Ðº CGI в IIS, PWS, OmniHTTPD или Xitami, Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ ÑледÑÑÑÑÑ Ð¾ÑибкÑ: Security Alert! PHP CGI cannot be accessed directly..
- Ðак ÑзнаÑÑ, ÑÑо мой php.ini бÑл найден и пÑоÑÑÑн? ÐÐ¾Ñ Ð¾Ð¶Ðµ, ÑÑо мои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ бÑли воÑпÑинÑÑÑ?
- Ðак на Windows добавиÑÑ Ð¼Ð¾Ñ PHP диÑекÑоÑÐ¸Ñ Ð² PATH?
- Ðак в Windows ÑделаÑÑ Ñайл php.ini доÑÑÑпнÑм Ð´Ð»Ñ PHP?
- Ðозможно ли иÑполÑзоваÑÑ ÑоглаÑование ÑодеÑÐ¶Ð°Ð½Ð¸Ñ Ð² Apache (опÑÐ¸Ñ MultiViews) c PHP?
-
Почему я не должен использовать Apache2 с потоковым MPM в эксплуатации?
-
PHP - это клей. Клей, используемый для построения классных web приложений, склеивая дюжины сторонних библиотек и создавая впечатление одного согласованного целого, с помощью интуитивного и легко изучаемого языка. Гибкость и мощь PHP полагается на стабильность и устойчивость используемой платформы. Для склейки вместе ему необходимы работающая ОС, работающий web сервер и работающие сторонние библиотеки. Когда что-либо из этого перестаёт работать PHP нужны способы определения проблем и их быстрого исправления. Если вы усложняете низлежащую систему, не разделяя полностью потоки выполнения, не выделяя раздельные сегменты памяти и не предоставляя "песочницу" для игры для каждого запроса, то ваша PHP система увязнет в глине.
Если вы всё-таки чувствуете, что должны использовать потоковый MPM, взгляните на конфигурацию с FastCGI, где вы можете запускать PHP в своём собственном пространстве памяти.
И наконец, это предупреждение против потокового MPM не настолько остро для пользователей Windows, так как большинство библиотек на этой платформе потокобезопасны.
-
Unix/Windows: Где должен находиться файл php.ini?
-
На Unix по умолчанию он должен находиться в директории /usr/local/lib, определяемой как <install-path>/lib. Большинство людей изменяют это во время компиляции с помощью опции --with-config-file-path Для примера, вы можете задать что-то типа:
Затем скопировать файл php.ini-dist из дистрибутива в /etc/php.ini и отредактировать его для ваших локальных потребностей.--with-config-file-path=/etc
--with-config-file-scan-dir=PATH
На Windows по умолчанию php.ini находится в Windows директории. Если вы используете Apache web сервер, php.ini сначала ищется в директории, где был установлен Apache, например c:\program files\apache group\apache. В этом случае на одной машине у вас могут быть разные файлы php.ini для разных версий Apache.
Смотрите также главу о конфигурационном файле.
-
Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение 'Document Contains No Data' (Документ Не Содержит Данных)! Что происходит?
-
Вероятно, PHP падает по какой-то причине. Для того, чтобы убедиться в этом, просмотрите лог ошибок вашего сервера и затем попытайтесь воспроизвести проблему с помощью небольшого тестового примера. Если вы умеете пользоваться 'gdb', то добавьте трассировку к вашему сообщению об ошибке, это поможет разработчикам точно определить проблему. Если вы используете PHP как модуль Apache попробуйте что-то типа:
-
Остановите ваши httpd процессы
-
gdb httpd
-
Остановите ваши httpd процессы
-
> run -X -f /path/to/httpd.conf
-
Затем вызовите URL, на котором возникает проблема, из вашего браузера
-
> run -X -f /path/to/httpd.conf
-
Если вы получаете дамп, gdb должен сейчас сообщить вам об этом
-
введите: bt
-
Вам необходимо включить трассировку в ваше сообщение об ошибке, которое должно быть отправлено с » https://bugs.php.net/
Если ваш скрипт использует функции регулярных выражений (ereg() и компания), то вам необходимо убедиться, что вы скомпилировали PHP и Apache с одним и тем же пакетом регулярных выражений. Это должно происходить автоматически для PHP и Apache 1.3.x
-
-
Unix: Я установил PHP, используя RPMS, но Apache не обрабатывает PHP страницы! Что происходит?
-
Полагая, что Apache и PHP оба были установлены из пакетов RPM, вам требуется в вашем файле httpd.conf раскомментировать или добавить все или некоторые из следующих строк:
# Extra Modules AddModule mod_php.c AddModule mod_php3.c AddModule mod_perl.c # Extra Modules LoadModule php_module modules/mod_php.so LoadModule php3_module modules/libphp3.so # for PHP 3 LoadModule php4_module modules/libphp4.so # for PHP 4 LoadModule perl_module modules/libperl.so
AddType application/x-httpd-php3 .php3 # for PHP 3 AddType application/x-httpd-php .php # for PHP 4
-
Unix: Я установил PHP 3 используя RPMS, но он не компилируется с поддержкой нужной мне базы данных! Что происходит?
-
Из-за того, как построен PHP 3, собрать полный и гибкий RPM для PHP не легко. Эта проблема решена в PHP 4. Для PHP 3 мы рекомендуем способ, описанный в файле INSTALL.REDHAT из дистрибутива PHP. Если вы всё-таки настаиваете на использовании варианта с RPM для PHP 3, читайте далее...
Те, кто собирает RPM пакеты, настраивают RPMS для установки без поддержки баз данных для упрощения установок и потому что RPMS использует /usr/ вместо стандартной /usr/local/ директории для файлов. Вам необходимо указать в спек файле RPM какие базы данных поддерживать и где находится ваш сервер баз данных.
Следующий пример объясняет процесс добавления поддержки для популярного сервера баз данных MySQL, используя mod установку для Apache.
Конечно, всё это может быть применено для любого сервера баз данных, который PHP поддерживает. Для этого примера, мы будем полагать, что вы установили MySQL и Apache полностью с RPMS.
-
Во-первых, удалите mod_php3 :
rpm -e mod_php3
-
Затем получите rpm с исходниками и УСТАНОВИТЕ его, НЕ --rebuild
rpm -Uvh mod_php3-3.0.5-2.src.rpm
-
Затем отредактируйте файл /usr/src/redhat/SPECS/mod_php3.spec
В секции %build добавьте поддержку нужной вам базы данныз и укажите путь
Для MySQL вы добавите --with-mysql=/usr Секция %build будет выглядеть как что-то типа следующего:
./configure --prefix=/usr \ --with-apxs=/usr/sbin/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex
-
После того, как вы сделали эти изменения, постройте бинарный rpm как:
rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
-
Затем установите этот rpm
rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
-
-
Unix: Я установил заплатку в Apache для расширений FrontPage и неожиданно PHP перестал работать. Неужели PHP не совместим с FrontPage расширениями для Apache?
-
Нет, PHP прекрасно работает с FrontPage расширениями. Проблема в том, что FrontPage заплатка изменяет некоторые важные для PHP структуры. Перекомпиляция PHP (выполняя 'make clean ; make') после установки FP заплатки должна решить эту проб