Этот раздел содержит общие вопросы о том, как производится установка PHP. Дистрибутивы PHP есть почти для всех операционных систем и веб-серверов.
Для установки PHP, следуйте инструкциям: Установка и настройка.
PHP подобен связующему звену. Он полезен для создания хороших веб-приложений путём объединения разрозненных сторонних библиотек в единое целое, через использование интуитивно понятного и простого для изучения языкового интерфейса. Гибкость и сила PHP основана на стабильности и устойчивости платформы, на которой он работает. Чтобы всё работало, нужна рабочая операционная система, рабочий веб-сервер и рабочие сторонние библиотеки. Но когда хоть что-либо из них перестаёт работать - PHP нуждается в способах быстрого определения причины неполадки и её устранения. И когда Вы усложняете базовый фреймворк тем, что не изолируете исполняемые потоки и сегменты памяти, и не предоставляете потокам отдельных изолированных "песочниц" - ослабляется вся PHP-система.
Если Вы пожелаете использовать многопоточный "MPM" - ознакомьтесь с конфигурацией "FastCGI", согласно которой PHP работает в собственном пространстве памяти.
По умолчанию, в Unix /usr/local/lib, что соответствует <установочный-путь>/lib. Многие захотят изменить путь в момент компиляции, используя опцию --with-config-file-path Например, можно написать так:
--with-config-file-path=/etc
--with-config-file-scan-dir=PATH
В ОС "Windows", по умолчанию, путь к файлу php.ini это путь к директории "Windows". Если Вы пользуетесь веб-сервером "Apache", php.ini находится по пути: ?\program files\apache group\apache\. Таким образом, на одном компьютере можно пользоваться несколькими php.ini файлами, соответственно версиям "Apache".
См. также: файл настроек.
Это значит, что, возможно, PHP столкнулся с какой-то проблемой и падает в core-dump. Просмотрите логи ошибок сервера чтобы проверить это, и затем попытайтесь воспроизвести цепочку шагов, приведших к ошибке; например, создав отдельную тестовую программу. И если Вы умеете пользоваться 'gdb', то это поможет Вам получить backtrace для включения его в bug-report, чтобы облегчить выявление причин проблемы разработчикам. Если Вы пользуетесь PHP как модулем для Apache, вам может оказаться полезным следующее:
Остановите httpd-процессы
gdb httpd
Вновь остановите http-процессы
> run -X -f путь_к_httpd.conf
Затем скопируйте URL, с которым не справился browser
> run -X -f путь_к_httpd.conf
Если будет происходить core dump - gdb сообщит Вам об этом
type: bt
Включите backtrace в ваш bug-report. И отправьте по адресу: » http://bugs.php.net/
Если Ваш скрипт использует регулярные выражения (preg_match() и подобные), проверьте, с одинаковыми ли пакетами обработки RegEx скомпилированы PHP и Apache? В случае PHP и Apache 1.3.x это автоматизировано.
Если что вы установили и Apache, и PHP из RPM-пакетов, вам понадобится раскомментировать или добавить некоторые (или, быть может, все) строки из числа следующих, в вашем httpd.conf файле:
# Extra Modules AddModule mod_php.c AddModule mod_perl.c # Extra Modules LoadModule php_module modules/mod_php.so LoadModule php5_module modules/libphp5.so LoadModule perl_module modules/libperl.so
AddType application/x-httpd-php .php
Нет, совместим, но патч FrontPage влияет на структуры Apache, нужные для PHP. Перекомпиляция PHP (команда 'make clean ; make') после установки патча может решить проблему.
Выберите в браузере опцию "посмотреть код" и вы, возможно, увидите, ваш PHP-код. Это значит, что Apache не передал ваш скрипт интерпретатору PHP. Значит что-то неправильно с конфигурацией сервера. В этом случае перепроверьте конфигурацию веб-сервера в соответствии с инструкциями по установке PHP.
Что-то пошло не так, когда сервер попытался запустить PHP. Что бы увидеть возникающую исходную ошибку, в коммандной строке перейдите в директорию, содержащую исполняемый файл PHP (php.exe в Windows) и запустите php -i. Если существуют какие либо проблемы с запуском PHP, вам выведется соответствующая ошибка, которая подскажет вам, что надо исправить. Если вы увидете множество кода HTML (вывод функции phpinfo()), значит PHP работает нормально, и ваша проблема связана с настройками веб-сервера.
[mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
Это означает, что проблема не в PHP, а в клиентских библиотеках MySQL. Некоторые из них требуют сборки PHP с опцией --with-zlib . Этот нюанс описан в MySQL FAQ.
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Это означает, что PHP не смог ничего вывести в стандартный поток ввода-вывода. Что бы увидеть возникающую исходную ошибку, в коммандной строке перейдите в директорию, содержащую исполняемый файл PHP (php.exe в Windows) и запустите php -i. Если существуют какие либо проблемы с запуском PHP, вам выведется соответствующая ошибка, которая подскажет вам, что надо исправить. Если вы увидете множество кода HTML (вывод функции phpinfo()), значит PHP работает нормально.
Когда вы убедились, что PHP нормально работает в коммандной строке, попробуйте обратиться к скрипту через браузер снова. Если опять возникнет ошибка - это может означать одну из следующих проблем:
Убедитесь, что все пользователи, которым может понадобиться запустить ваш PHP скрипт, имеют право запускать php.exe! IIS использует анонимного пользователя, создаваемого во время инсталляции. Этот пользователь должен иметь права на запуск php.exe. Так же, каждый авторизованный пользователь должен иметь права на запуск php.exe. Для IIS4 вы сказать ему, что PHP - это интерпритатор скриптов. Также прочтите этот FAQ.
Вы должны установить опцию cgi.force_redirect равную 0. По умолчанию она равна 1. Убедитесь, что она не закомментирована (с помощью ;). Как и все опции PHP, она настраивается в php.ini
Так как она по умолчанию равна 1, критически важно убедиться, что используется именно тот php.ini, который нужен. Читайте этот FAQ для подробностей.
Для проверки, какой именно php.ini используется, запустите функцию phpinfo(). Где-то вверху будет список с названием Configuration File (php.ini). Из него вы сможете понять, какой именно php.ini используется. Если указана только директория в PATH, а файл конфигурации не прочитан, то просто скопируйте его в эту директорию. Если php.ini включен PATH - это значит, что он прочитан.
Если php.ini читается и вы запускаете PHP как модуль, то, после внесения изменений в php.ini, необходимо перезагрузить веб-сервер.
Также смотрите описание php_ini_loaded_file().
В Windows 7, XP, Vista, 2008, 2012 и выше:
Старт → Панель Управления → Система
Перейдите на вкладку 'Дополнительно'
Нажмите кнопку 'Переменные Окружения'
Посмотрите раздел 'Системные Переменные'
Найдите строку, содержащую переменную PATH
Совершите на ней двойной щелчек мышью
Допишите в конец строки путь к PHP, не забыв добавить перед ним ';' (например ;C:\php)
Нажмите OK
В Windows 98/Me вам нужно отредактировать файл autoexec.bat:
Откройте блокнот
Откройте в блокноте файл C:\autoexec.bat
Найдите строку PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... и добавьте в конце ;C:\php
Сохраните изменения и перезагрузите компьютер.
Замечание: Не забудьте перезагрузиться после описанных выше действий и, после перезагрузки, проверить, что переменная PATH содержит нужный путь.
В некоторых устаревших руководствах PHP предлагается поместить исполняемые файлы в системный каталог Windows потому, что (C:\Windows, C:\WINNT, и т.д..) по умолчанию заданы в переменной окружения PATH. Но на данный момент это не рекомендуется, поскольку может вызвать разнообразные проблемы.
Есть несколько путей сделать это. Если вы используете Apache, прочитайте следующие инструкции (Apache 1, Apache 2), также вы можете установить системную переменную PHPRC:
в Windows:
Старт → Панель Управления → Система
Перейдите на вкладку 'Дополнительно'
Нажмите кнопку 'Переменные Окружения'
Посмотрите раздел 'Системные Переменные'
Нажмите кнопку 'Добавить' и введите 'PHPRC' как имя переменной и директорию с php.ini в качестве ее значения (например C:\php)
Нажмите ОК и перезагрузите компьютер
В Windows 98/Me вам нужно отредактировать файл autoexec.bat:
Откройте блокнот
Откройте в блокноте файл C:\autoexec.bat
Добавьте новую строку в конце файла: set PHPRC=C:\php (замените C:\php на директорию, где лежит php.ini). Обратите внимание, что путь не должен содержать пробелов. К примеру, если файл лежит в C:\Program Files\PHP, вы должны указать короткое имя C:\PROGRA~1\PHP.
Сохраните файл и перезагрузите компьютер
Если ссылки на файлы PHP содержат расширения, то все будет работать отлично. Это FAQ применимо только для случаев, когда ссылки не содержат расширения и вы хотите использовать согласование контента для файлов PHP из URL. В этом случае замените строку AddType application/x-httpd-php .php на:
AddHandler php5-script php AddType text/html php
Нет, возможно работать с любыми запросами, например CONNECT. Правильный статус ответа должен будет посылаться функцией header(). Если вам надо, что бы PHP работать только с методами GET и POST, необходимо сконфигурировать Apache следующим образом:
<LimitExcept GET POST> Deny from all </LimitExcept>