Установка
Этот раздел содержит общие вопросы о том, как производится установка PHP. Дистрибутивы PHP доступны почти для всех операционных систем и веб-серверов.
Для установки PHP, следуйте инструкциям: Установка и настройка.
- Почему лучше не пользоваться Apache2 с многопоточным «MPM» (event, worker) в промышленной эксплуатации?
- ОС «Unix»/»Windows»: Где искать файл php.ini?
- Unix: Я установил PHP, но при каждом открытии какого-либо документа вижу ‘Document Contains No Data’, что это значит?
- Unix: Я установил PHP используя RPMS, но Apache не обрабатывает PHP-страницы, в чём дело?
- Unix: Я пропатчил Apache модулем FrontPage, и теперь PHP не работает. Т.е. PHP несовместим с модулями Apache FrontPage?
- Unix/Windows: Я установил PHP, но при попытке открыть PHP-файл браузером вижу просто пустой экран.
- Unix/Windows: Я установил PHP, но когда пытаюсь посмотреть созданную PHP-страницу через браузер, то получаю ошибку 500.
- Некоторые операционные системы: Я установил PHP без каких-либо ошибок, но когда пытаюсь запустить Apache, мне выводится ошибка: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
- Windows: Я установил 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 найден и используется? Такое впечатление, что вносимые мною изменения игнорируются.
- Как я могу добавить директорию с PHP в PATH в Windows?
- Как я могу сделать файл php.ini доступным для PHP в windows?
- Можно ли использовать согласование контента Apache (опция MultiViews) с PHP?
- PHP ограничен работой только с методами GET и POST?
Почему лучше не пользоваться Apache2 с многопоточным «MPM» (event, worker) в промышленной эксплуатации?
PHP подобен связующему звену. Это связующее звено для создания хороших веб-приложений путём объединения разрозненных сторонних библиотек в единое целое, через использование интуитивно понятного и простого для изучения языкового интерфейса. Гибкость и сила PHP основана на стабильности и устойчивости, лежащей в основе платформы. Чтобы всё работало, нужна рабочая операционная система, рабочий веб-сервер и рабочие сторонние библиотеки. Но когда хоть что-либо из них перестаёт работать — PHP нуждается в способах быстрого определения причины неполадки и её устранения. И когда вы усложняете базовый фреймворк тем, что не изолируете исполняемые потоки и сегменты памяти, и не предоставляете потокам отдельных изолированных «песочниц» — ослабляется вся PHP-система.
Если вы желаете использовать многопоточный «MPM» — ознакомьтесь с конфигурацией «FastCGI», согласно которой PHP работает в собственном пространстве памяти.
ОС «Unix»/»Windows»: Где искать файл php.ini ?
По умолчанию в Unix он должен быть в /usr/local/lib , который соответствует /lib . Многие захотят изменить этот путь в момент компиляции, используя опцию —with-config-file-path Например, можно написать так:
--with-config-file-path=/etc
И затем скопировать php.ini-development из дистрибутива в /etc/php.ini и внести в него все необходимые изменения.
--with-config-file-scan-dir=PATH
В ОС «Windows», по умолчанию, путь к файлу php.ini это путь к директории «Windows». Если вы пользуетесь веб-сервером «Apache», php.ini находится по пути: ?\program files\apache group\apache\ . Таким образом, на одном компьютере можно пользоваться несколькими файлами php.ini , соответственно версиям «Apache».
Unix: Я установил PHP, но при каждом открытии какого-либо документа вижу ‘Document Contains No Data’, что это значит?
- Остановите httpd-процессы
- gdb httpd
- Вновь остановите httpd-процессы
- > run -X -f путь_к_httpd.conf
- Затем скопируйте URL,вызвавший проблему в браузере
- > run -X -f путь_к_httpd.conf
- Если будет происходить core dump, gdb сообщит вам об этом
- Введите bt
- Включите backtrace в ваш отчёт об ошибке. И отправьте по адресу: » https://github.com/php/php-src/issues
Если ваш скрипт использует регулярные выражения ( preg_match() и подобные), проверьте, с одинаковыми ли пакетами обработки RegEx скомпилированы 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_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
. в область глобальных свойств, или в свойства того VirtualDomain, для которого вы хотите включить поддержку PHP.
Unix: Я пропатчил Apache модулем FrontPage, и теперь PHP не работает. Т.е. PHP несовместим с модулями Apache FrontPage?
Нет, совместим, но патч FrontPage влияет на структуры Apache, нужные для PHP. Перекомпиляция PHP (команда ‘make clean ; make’) после установки патча может решить проблему.
Unix/Windows: Я установил PHP, но при попытке открыть PHP-файл браузером вижу просто пустой экран.
Выберите в браузере опцию «посмотреть код» и вы, возможно, увидите, ваш PHP-код. Это значит, что Apache не передал ваш скрипт интерпретатору PHP. Значит что-то неправильно с конфигурацией сервера. В этом случае перепроверьте конфигурацию веб-сервера в соответствии с инструкциями по установке PHP.
Unix/Windows: Я установил PHP, но когда пытаюсь посмотреть созданную PHP-страницу через браузер, то получаю ошибку 500.
Что-то пошло не так, когда сервер попытался запустить PHP. Чтобы увидеть возникающую исходную ошибку, в командной строке перейдите в директорию, содержащую исполняемый файл PHP ( php.exe в Windows) и запустите php -i. Если существуют какие-либо проблемы с запуском PHP, вам выведется соответствующая ошибка, которая подскажет вам, что надо исправить. Если вы увидите множество кода HTML (вывод функции phpinfo() ), значит PHP работает нормально, и ваша проблема связана с настройками веб-сервера.
Некоторые операционные системы: Я установил PHP без каких-либо ошибок, но когда пытаюсь запустить Apache, мне выводится ошибка:
[mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
Это означает, что проблема не в PHP, а в клиентских библиотеках MySQL. Некоторые из них требуют сборки PHP с опцией —with-zlib. Этот нюанс описан в MySQL FAQ.
Windows: Я установил PHP, но когда пытаюсь открыть страницу скрипта через браузер, получаю ошибку:
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.exe , php5ts.dll , php.ini или какого-либо модуля PHP не позволяют анонимному пользователю интернета ISUR_ к ним обратиться.
- Файл скрипта отсутствует (или, возможно, он находится не там, где вы думаете, относительно корневого каталога веб-сервера). Обратите внимание, что в IIS, вы можете отловить эту ошибку, отметив опцию ‘check file exists’ в настройках «script mappings» в Internet Services Manager. Если файл отсутствует, сервер вместо этого вернёт ошибку 404. При этом, также есть дополнительное преимущество. IIS будет производить проверки аутентификации для файла скрипта, необходимые вам, основываясь на разрешениях NTLanMan.
Убедитесь, что все пользователи, которым может понадобиться запустить ваш PHP-скрипт, имеют право запускать php.exe ! IIS использует анонимного пользователя, создаваемого во время инсталляции. Этот пользователь должен иметь права на запуск php.exe . Так же, каждый авторизованный пользователь должен иметь права на запуск php.exe . Для IIS4 вы сказать ему, что PHP — это интерпретатор скриптов. Также прочтите этот FAQ.
Когда я запускаю PHP как CGI на IIS, PWS, OmniHTTPD или Xitami, я получаю такую ошибку: Security Alert! PHP CGI cannot be accessed directly. .
Вы должны установить опцию cgi.force_redirect равную 0 . По умолчанию она равна 1 . Убедитесь, что она не закомментирована (с помощью ; ). Как и все опции PHP, она настраивается в php.ini
Так как она по умолчанию равна 1 , критически важно убедиться, что используется именно тот php.ini , который нужен. Читайте этот FAQ для подробностей.
Как я могу понять, что мой php.ini найден и используется? Такое впечатление, что вносимые мною изменения игнорируются.
Для проверки, какой именно php.ini используется, запустите функцию phpinfo() . Где-то вверху будет список с названием Configuration File (php.ini) . Из него вы сможете понять, какой именно php.ini используется. Если указана только директория в PATH , а файл конфигурации не прочитан, то просто скопируйте его в эту директорию. Если php.ini включён PATH — это значит, что он прочитан.
Если php.ini читается и вы запускаете PHP как модуль, то, после внесения изменений в php.ini , необходимо перезагрузить веб-сервер.
Как я могу добавить директорию с PHP в PATH в Windows?
- Старт → Панель Управления → Система
- Перейдите на вкладку ‘Дополнительно’
- Нажмите кнопку ‘Переменные Окружения’
- Посмотрите раздел ‘Системные Переменные’
- Найдите строку, содержащую переменную PATH
- Совершите на ней двойной щелчок мышью
- Допишите в конец строки путь к PHP, не забыв добавить перед ним ‘;’ (например ;C:\php )
- Нажмите OK
Замечание: Не забудьте перезагрузиться после описанных выше действий и, после перезагрузки, проверить, что переменная PATH содержит нужный путь.
Как я могу сделать файл php.ini доступным для PHP в windows?
Есть несколько способов сделать это. Если вы используете Apache, обратитесь к документации Apache, в противном случае вы должны установить переменную среды PHPRC .
Можно ли использовать согласование контента Apache (опция MultiViews) с PHP?
Если ссылки на файлы PHP содержат расширения, то все будет работать отлично. Это FAQ применимо только для случаев, когда ссылки не содержат расширения и вы хотите использовать согласование контента для файлов PHP из URL. В этом случае замените строку AddType application/x-httpd-php .php на:
AddHandler php5-script php AddType text/html php
Это решение не сработает с Apache 1, так как модуль PHP не отлавливает php-script .
PHP ограничен работой только с методами GET и POST?
Нет, возможно работать с любыми запросами, например CONNECT. Правильный статус ответа должен будет посылаться функцией header() . Если вам надо, чтобы PHP работать только с методами GET и POST, необходимо сконфигурировать Apache следующим образом:
Deny from all
Как добавить путь до PHP в переменную окружения PATH в Windows
Вполне возможно, что вам не приходилось ранее сталкиваться с PATH и выражениями «переменная окружения», поэтому я кратко поясню, что это такое.
Переменная PATH содержит список папок, в которых Windows ищет исполнимые файлы.
В графическом интерфейсе, когда для запуска программ используются ярлыки, значение PATH не очень большое. Но если вы запускаете программу в командной строке, то PATH может пригодиться. Опять же, если вы указываете полный путь до файла, например, C:\Users\Alex\Documents\php.exe, то PATH не используется. Но если, например, вы запускаете программу только по имени файла или просто по имени (без файлового расширения), то запустится ли программа, будет зависеть от содержимого переменной PATH.
К примеру, я в командной строке пытаюсь запустить файл (без указания полного пути)
php.exe
В этом случае операционная система посмотрит все записи PATH (там может быть указано несколько каталогов). Затем в каждом из этих каталогов Windows попытается найти файл php.exe. Если файл найден, то он будет запущен. Если файл не найден, то будет выведено соответствующее сообщение.
По сути, что-то дописывать в переменную PATH нужно только тем, кто много работает с командной строкой. К примеру, вы программист и размещаете свои программы в папке C:\MyApps и при этом вы часто запускаете свои утилиты командной строки. В этом случае вы можете добавить C:\MyApps в PATH и после этого для запуска программ из этой папки вам уже не нужно будет каждый раз вводить полное имя (например, C:\MyApps\parser.exe), а достаточно будет в командной строке ввести только имя файла:
parser.exe
Нужно ли в Windows добавлять PHP в переменную окружения
При установке и настройке PHP в Windows необязательно добавлять в PATH путь до PHP, но это рекомендуется делать.
Во-первых, вы сможете запускать PHP используя сокращённую запись:
php my_script.php
C:\Server\bin\PHP\php.exe my_script.php
Во-вторых, ряд расширений (которые включаются в файле php.ini) работают некорректно, если вы не прописали в PATH путь до PHP; в том числе, это касается такого довольно популярного расширения как cURL. По идее — это какой-то баг этих расширений или PHP, но нам самим придётся исправлять ситуацию, поскольку эта проблема существует уже много лет.
Как добавить PHP в системные переменные среды
Нажмите кнопку Windows (это которая раньше была кнопкой «Пуск»), начните набирать «Изменение системных переменных среды»
и откройте соответствующее окно настроек.
Там нажмите «Переменные среды», откроется:
В окне «Системные переменные» найдите и кликните на Path, потом нажмите «Изменить»:
Далее «Создать» и впишите туда «C:\Server\bin\PHP\»:
Поднимите запись в самый Вверх:
Закройте все окна с сохранением сделанных изменений.
Как добавить путь до … в переменную PATH
В различных руководствах и документациях часто встречается пункт «добавьте путь до чего либо в переменную PATH». Что это за переменная и как в нее что-то добавить описано ниже, в этой заметке.
Что такое переменная PATH и для чего она нужна?
Если коротко, то PATH это такая переменная, с помощью нее операционная система ищет исполняемые объекты, которые вы пытаетесь вызвать в командной строке.
Другими словами, PATH позволяет запускать исполняемые файлы, без указания их точного местоположения на диске. Например, после установки Python на Windows, для выполнения скрипта Питона нам достаточно в командной строке набрать:
Нам не пришлось указывать точного пути до интерпретатора Питона (в моем случае C:\Users\Alex\AppData\Local\Programs\Python\Python37-32\python.exe) как раз из-за установленной переменной PATH.
соответствующую программу. Этим можно воспользоваться в своих целях двумя способами:
Как добавить PHP в системные переменные среды?
Для примера добавим PHP в переменную PATH.
У меня на компьютере интерпретатор php располагается в каталоге C:\xampp\php72, поэтому чтобы выполнить php скрипт в командной строке, мне нужно ввести:
Но согласитесь, гораздо удобней так:
К тому же некоторые программы, например IDE будут автоматически «понимать» где расположен интерпретатор php.
Итак, чтобы добраться до настроек переменной PATH, нам сначала нужно открыть Панель управления Windows, поскольку Микрософт постоянно меняет ее положение, проще всего найти ее через поиск:

Далее нужно выбрать Система -> Дополнительные параметры системы.

В последних версия Windows 10 Дополнительные параметры системы открываются по такому пути:
Сначала открываете Все параметры -> Система, далее слева внизу выбираете О программе и справа в списке будет нужный пункт Дополнительные параметры системы.

В открывшемся окне Свойства системы нужно выбрать вкладку Дополнительно и внизу будет кнопка Переменные среды.

Выбираем переменную среды Path и нажимаем Изменить. После этого нажимаем кнопку Создать и вводим пусть до папки, где расположен наш интерпретатор PHP, в моем случае C:\xampp\php72.
Далее везде нажимаем ОК, все, переменная среды для PHP сохранена.
Теперь, если перезапустить командную строку, можно выполнять php скрипты не указывая полного пусти к интерпретатору.
Категории
Свежие записи
- Импорт/экспорт Linux WSL
- Не печатаются заглавные буквы в PowerShell
- 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
- Несколько конфигураций для проекта Django
- Django inclusion_tag с разными шаблонами
- Декоратор @property в моделях Django
Windows и Denwer. Добавление PHP в переменные среды
Подробное описание добавления PHP в переменные среды Windows при использовании Denwer.

Внимание! Статья написана под Windows 7, но принципиальных отличий в добавлении PHP в переменные среды в другие версии (Window XP, Windows Vista, Windows 8, . ) нет.
Информация! Все пути в настройках будут указаны исходя из того, что Denwer установлен в папку D:/web . При использовании данных из статьи не забудьте поменять этот путь на свой.
Для удобного использования PHP в консоле Windows необходимо настроить переменные среды. Иначе при работе с PHP через консоль вместо команды php Вам будет необходимо писать полный путь к файлу php.exe .
Предположим, что Denwer у нас установлен в папку D:/web .
Кликаем правой кнопкой мыши по иконке «Компьютер» Свойства:

Дополнительные параметры системы:

Вкладка «Дополнительно», кнопка «Параметры среды. «:

Группа «Системные параметры», выделите переменную Path и нажмите кнопку изменить:

Добавьте строку D:\web\usr\local\php5; и нажмите кнопку «Ок»:

Перезапустите Denwer. Теперь Вы можете открыть консоль ( Win + R и введите cmd ) и проверить работу PHP , введите команду:
php -h
Далее у нас несколько вариантов. Первый, все хорошо и можем дальше не читать. Второй, в консоле будут выведен список ошибок, а после выполнена команда php -h . Примерно это будет выглядеть так:

Для исправления этих ошибок откройте файл D:/web/usr/local/php5/php.ini . Найдите переменные extension_dir , zend_extension , session.save_path и установите для них следующие значения:
;. extension_dir = "D:/web/usr/local/php5/ext" ;. zend_extension="D:\web\usr\local\php5\ext\php_xdebug-2.2.0-5.3-vc9.dll" ;. session.save_path = "D:/web/tmp" ;..
Сохраните файл и перезапустите Denwer. Теперь все должно работать как положено.
Мы публикуем только рабочие и проверенные примеры. Если у вас возникли вопросы, то задавайте их в комментариях, не стесняйтесь)
Если вам понравился опубликованный материал делитесь им и подписывайтесь на нас в соц. сетях
