Отсутствует файл php ini
I am currently trying to locate the correct php.ini file to edit it and restart apache so the changes will take place and I'm stumped.
I have found three different php.ini files (no idea why there are three) this is how I found the files
I changed all of them (just to be sure) to the settings I wanted.
I restarted apache using
I reloaded the page and it showed that the php.ini file was not updated.
I know this because I used
Which was supposed to be changed to 20M but was still only 2M
I tried rebooting my computer thinking maybe that would stop the apache server and reload the php.ini file with the correct setting, but alas that attempt also failed.
Is there any chance there could be another php.ini file that could be interfering?
@Michael The file is /etc/php/5.6/apache2/php.ini in Ubuntu 16.04 LTS Xenial Xerus, where 5.6/ is the version of php installed. First copy the file to php.original.ini then open for editing with sudo gedit /etc/php/5.6/apache2/php.ini
7 Answers 7
The three files you have there are each meant for different uses.
/etc/php/5.6/cli/php.ini is for the CLI PHP program, which you found by running php on the terminal.
/etc/php/5.6/cgi/php.ini is for the php-cgi system which isn't specifically used in this setup.
/etc/php/5.6/apache2/php.ini is for the PHP plugin used by Apache. This is the one you need to edit for changes to be applied for your Apache setup which utilizes the in-built PHP module to Apache.
/etc/php/5.6/fpm/php.ini is for the php5-fpm processor, which is a fastcgi-compatible 'wrapper' for PHP processing (such as to hand off from NGINX to php5-fpm ) and runs as a standalone process on the system (unlike the Apache PHP plugin)
For versions of Ubuntu lower than 16.04, /etc/php/5.6/ , /etc/php/7.0/ , /etc/php/7.1/ , and so on, are replaced by /etc/php5/ and so on. Otherwise, these paths remain accurate. Adapt this accordingly for your environment, replacing the 5.6 or number with the actual version folder that exists on your environment.
Этот раздел содержит общие вопросы о том, как производится установка PHP. Дистрибутивы PHP доступны почти для всех операционных систем и веб-серверов.
Для установки PHP, следуйте инструкциям: Установка и настройка.
Почему лучше не пользоваться Apache2 с многопоточным "MPM" (event, worker) в промышленной эксплуатации?
PHP подобен связующему звену. Это связующее звено для создания хороших веб-приложений путём объединения разрозненных сторонних библиотек в единое целое, через использование интуитивно понятного и простого для изучения языкового интерфейса. Гибкость и сила PHP основана на стабильности и устойчивости, лежащей в основе платформы. Чтобы всё работало, нужна рабочая операционная система, рабочий веб-сервер и рабочие сторонние библиотеки. Но когда хоть что-либо из них перестаёт работать - PHP нуждается в способах быстрого определения причины неполадки и её устранения. И когда вы усложняете базовый фреймворк тем, что не изолируете исполняемые потоки и сегменты памяти, и не предоставляете потокам отдельных изолированных "песочниц" - ослабляется вся PHP-система.
Если вы желаете использовать многопоточный "MPM" - ознакомьтесь с конфигурацией "FastCGI", согласно которой PHP работает в собственном пространстве памяти.
ОС "Unix"/"Windows": Где искать файл php.ini ?
По умолчанию в Unix он должен быть в /usr/local/lib , который соответствует /lib . Многие захотят изменить этот путь в момент компиляции, используя опцию --with-config-file-path Например, можно написать так:
И затем скопировать php.ini-development из дистрибутива в /etc/php.ini и внести в него все необходимые изменения.
В ОС "Windows", по умолчанию, путь к файлу php.ini это путь к директории "Windows". Если вы пользуетесь веб-сервером "Apache", php.ini находится по пути: ?\program files\apache group\apache\ . Таким образом, на одном компьютере можно пользоваться несколькими файлами php.ini , соответственно версиям "Apache".
Unix: Я установил PHP, но при каждом открытии какого-либо документа вижу 'Document Contains No Data', что это значит?
Затем скопируйте URL,вызвавший проблему в браузере
Если будет происходить core dump, gdb сообщит вам об этом
Если ваш скрипт использует регулярные выражения ( preg_match() и подобные), проверьте, с одинаковыми ли пакетами обработки RegEx скомпилированы PHP и Apache? В случае PHP и Apache 1.3.x это происходит автоматически.
Unix: Я установил PHP используя RPMS, но Apache не обрабатывает 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 без каких-либо ошибок, но когда пытаюсь запустить Apache, мне выводится ошибка:
Это означает, что проблема не в PHP, а в клиентских библиотеках MySQL. Некоторые из них требуют сборки PHP с опцией --with-zlib. Этот нюанс описан в MySQL FAQ.
Windows: Я установил 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.
Вы должны установить опцию 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 )
Замечание: Не забудьте перезагрузиться после описанных выше действий и, после перезагрузки, проверить, что переменная PATH содержит нужный путь.
Есть несколько способов сделать это. Если вы используете Apache, обратитесь к документации Apache, в противном случае вы должны установить переменную среды PHPRC .
Можно ли использовать согласование контента Apache (опция MultiViews) с PHP?
PHP ограничен работой только с методами GET и POST?
Нет, возможно работать с любыми запросами, например CONNECT. Правильный статус ответа должен будет посылаться функцией header() . Если вам надо, чтобы PHP работать только с методами GET и POST, необходимо сконфигурировать Apache следующим образом:
Файл конфигурации ( php.ini ) считывается при запуске PHP. Для версий серверных модулей PHP это происходит только один раз при запуске веб-сервера. Для CGI и CLI версий это происходит при каждом вызове.
- По месту расположения модуля SAPI ( PHPIniDir директива Apache 2, -c параметр командной строки CGI и CLI)
- Переменная среды PHPRC .
- Местоположение файла php.ini может быть указано для различных версий PHP. Корневой ключ реестра зависит от разрядности операционной системы и установки PHP. Для 32-разрядного PHP на 32-разрядной Windows или 64-разрядного PHP и 64-разрядной Windows используйте [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] . Для 32-разрядного PHP на 64-разрядной Windows [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] . Следующие ключи реестра исследуются при поиске для установок с совпадающей разрядностью: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x] , где x, y и z подразумевают major, minor и release версии PHP. Для 32-разрядного PHP на 64-разрядной Windows ключи реестра будут другими: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x] . Если также имеется значение IniFilePath в любом из этих ключей, то местонахождение php.ini будет определено первым ключом по порядку (только для Windows).
- [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] или [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] , значение IniFilePath (только для Windows).
- Текущая директория (исключая CLI).
- Директория веб-сервера (для модулей SAPI) или директория PHP (иначе в Windows).
- В директории Windows ( C:\windows или C:\winnt ) (для Windows) или --with-config-file-path с выбором при компиляции.
Если файл php-SAPI.ini существует (где SAPI - это тип интерфейса, который используется, например, php-cli.ini или php-apache.ini ), то он используется вместо php.ini . Тип интерфейса между веб-сервером и PHP может быть определён с помощью функции php_sapi_name() .
Замечание:
Веб-сервер Apache изменяет текущую директорию на корневую при запуске, в результате чего PHP считывает php.ini из корневой файловой системы, если файл существует.
В php.ini можно использовать переменные окружения, как показано ниже.
Директивы php.ini , обрабатываемые модулями, описаны на соответствующих страницах модулей. Список директив ядра имеется в приложении. Не все директивы PHP документированы в этом руководстве: для ознакомления с полным списком директив доступных в вашей версии PHP, прочитайте комментарии вашего php.ini . Кроме того, вы можете найти полезной » последнюю версию php.ini из Git.
Возможно обращаться к существующим ini-переменным из ini-файлов. Пример: open_basedir = $ ":/new/dir" .
Сканирование директорий
Существует возможность сконфигурировать PHP для сканирования директорий в поисках .ini-файлов после считывания php.ini . Это можно сделать на моменте компиляции, указав опцию --with-config-file-scan-dir. Сканирование директорий может быть переопределено во время исполнения установкой переменной среды PHP_INI_SCAN_DIR .
Можно сканировать несколько директорий, разделяя их разделителем, используемом в вашей операционной системе ( ; в Windows, NetWare и RISC OS; : на всех остальных платформах; в PHP есть константа PATH_SEPARATOR , которую можно использовать) Если PHP_INI_SCAN_DIR пуста, то PHP также будет сканировать директорию, заданную на этапе компиляции с помощью --with-config-file-scan-dir.
В каждой директории PHP сканирует все файлы заканчивающиеся на .ini в алфавитном порядке. Список всех загруженных файлов в том порядке, в котором они были загружены, доступен с помощью функции php_ini_scanned_files() , либо при запуске PHP с опцией --ini.
This section holds common questions about the way to install PHP. PHP is available for almost any OS, and almost any web server.
To install PHP, follow the instructions in Installation and Configuration.
PHP is glue. It is the glue used to build cool web applications by sticking dozens of 3rd-party libraries together and making it all appear as one coherent entity through an intuitive and easy to learn language interface. The flexibility and power of PHP relies on the stability and robustness of the underlying platform. It needs a working OS, a working web server and working 3rd-party libraries to glue together. When any of these stop working PHP needs ways to identify the problems and fix them quickly. When you make the underlying framework more complex by not having completely separate execution threads, completely separate memory segments and a strong sandbox for each request to play in, further weaknesses are introduced into PHP's system.
If you want to use a threaded MPM, look at a FastCGI configuration where PHP is running in its own memory space.
Unix/Windows: Where should my php.ini file be located?
By default on Unix it should be in /usr/local/lib which is /lib . Most people will want to change this at compile-time with the --with-config-file-path flag. You would, for example, set it with something like:
And then you would copy php.ini-development from the distribution to /etc/php.ini and edit it to make any local changes you want.
On Windows the default path for the php.ini file is the Windows directory. If you're using the Apache webserver, php.ini is first searched in the Apaches install directory, e.g. c:\program files\apache group\apache . This way you can have different php.ini files for different versions of Apache on the same machine.
See also the chapter about the configuration file.
Unix: I installed PHP, but every time I load a document, I get the message 'Document Contains No Data'! What's going on here?
Then fetch the URL causing the problem with your browser
If you are getting a core dump, gdb should inform you of this now
If your script uses the regular expression functions ( preg_match() and friends), you should make sure that you compiled PHP and Apache with the same regular expression package. This should happen automatically with PHP and Apache 1.3.x
Unix: I installed PHP using RPMS, but Apache isn't processing the PHP pages! What's going on here?
. to the global properties, or to the properties of the VirtualDomain you want to have PHP support added to.
Unix: I patched Apache with the FrontPage extensions patch, and suddenly PHP stopped working. Is PHP incompatible with the Apache FrontPage extensions?
No, PHP works fine with the FrontPage extensions. The problem is that the FrontPage patch modifies several Apache structures, that PHP relies on. Recompiling PHP (using 'make clean ; make') after the FP patch is applied would solve the problem.
Unix/Windows: I have installed PHP, but when I try to access a PHP script file via my browser, I get a blank screen.
Do a 'view source' in the web browser and you will probably find that you can see the source code of your PHP script. This means that the web server did not send the script to PHP for interpretation. Something is wrong with the server configuration - double check the server configuration against the PHP installation instructions.
Unix/Windows: I have installed PHP, but when try to access a PHP script file via my browser, I get a server 500 error.
Something went wrong when the server tried to run PHP. To get to see a sensible error message, from the command line, change to the directory containing the PHP executable ( php.exe on Windows) and run php -i. If PHP has any problems running, then a suitable error message will be displayed which will give you a clue as to what needs to be done next. If you get a screen full of HTML codes (the output of the phpinfo() function) then PHP is working, and your problem may be related to your server configuration which you should double check.
Some operating systems: I have installed PHP without errors, but when I try to start Apache I get undefined symbol errors:
This has actually nothing to do with PHP, but with the MySQL client libraries. Some need --with-zlib, others do not. This is also covered in the MySQL FAQ.
Windows: I have installed PHP, but when I try to access a PHP script file via my browser, I get the error:
This error message means that PHP failed to output anything at all. To get to see a sensible error message, from the command line, change to the directory containing the PHP executable ( php.exe on Windows) and run php -i. If PHP has any problems running, then a suitable error message will be displayed which will give you a clue as to what needs to be done next. If you get a screen full of HTML codes (the output of the phpinfo() function) then PHP is working.
Once PHP is working at the command line, try accessing the script via the browser again. If it still fails then it could be one of the following:
- File permissions on your PHP script, php.exe , php5ts.dll , php.ini or any PHP extensions you are trying to load are such that the anonymous internet user ISUR_ cannot access them.
- The script file does not exist (or possibly isn't where you think it is relative to your web root directory). Note that for IIS you can trap this error by ticking the 'check file exists' box when setting up the script mappings in the Internet Services Manager. If a script file does not exist then the server will return a 404 error instead. There is also the additional benefit that IIS will do any authentication required for you based on the NTLanMan permissions on your script file.
Make sure any user who needs to run a PHP script has the rights to run php.exe ! IIS uses an anonymous user which is added at the time IIS is installed. This user needs rights to php.exe . Also, any authenticated user will also need rights to execute php.exe . And for IIS4 you need to tell it that PHP is a script engine. Also, you will want to read this faq.
You must set the cgi.force_redirect directive to 0 . It defaults to 1 so be sure the directive isn't commented out (with a ; ). Like all directives, this is set in php.ini
Because the default is 1 , it's critical that you're 100% sure that the correct php.ini file is being read. Read this faq for details.
How do I know if my php.ini is being found and read? It seems like it isn't as my changes aren't being implemented.
To be sure your php.ini is being read by PHP, make a call to phpinfo() . Near the top, there will be a listing called Configuration File (php.ini) . This will tell you where PHP is looking for php.ini and whether or not it's being read. If just a directory PATH exists, then it's not being read, and you should put your php.ini in that directory. If php.ini is included within the PATH , it is being read.
If php.ini is being read and you're running PHP as a module, then be sure to restart your web server after making changes to php.ini
How do I add my PHP directory to the PATH on Windows?
Go to Control Panel and open the System icon (Start → Control Panel)
Go to the Advanced tab
Click on the 'Environment Variables' button
Look into the 'System Variables' pane
Find the Path entry (you may need to scroll to find it)
Double click on the Path entry
Enter your PHP directory at the end, including ';' before (e.g. ;C:\php )
Note: Be sure to reboot after following the steps above to ensure that the PATH changes are applied.
There are several ways of doing this. If you are using Apache, refer to the Apache documentation, otherwise you must set the PHPRC environment variable.
Is it possible to use Apache content negotiation (MultiViews option) with PHP?
Is PHP limited to process GET and POST request methods only?
No, it is possible to handle any request method, e.g. CONNECT. Proper response status can be sent with header() . If only GET and POST methods should be handled, it can be achieved with this Apache configuration:
В папке с PHP нет php.ini, но есть php.ini-development и php.ini-production.
Они одинаковы. Насколько я понимаю, надо просто переименовать один из них, удалив часть названия, чтобы остался только php.ini. Но который?
И нужно ли предпринимать еще дополнительные действия в связи с этим переименованием - вручную задавать пути к ним где-то и т.д.?
Именно php.ini есть свой отделдьный в XAMPP, но мне надо запускать не только через браузер, а и билдить php-вывод прямо в Sublime Text 3. Поэтому нужно понимать, как настраивать именно "системный" php.
Как правильно поступить?
Не одинаковы, разница в конфигах есть.
Да, предполагается, что вы возьмете один из этих файлов как основу для создания собственного php.ini. Если для разработки - берите за основу development. Все равно вам придется внутри что-то менять, по умолчанию там много всего отключено.
И нужно ли предпринимать еще дополнительные действия в связи с этим переименованием - вручную задавать пути к ним где-то и т.д.?
Файл php.ini подключится автоматически. Но в принципе вы можете иметь сколько угодно конфигов для разных задач и указывать их как описано в документации.
vova_comp, это я в phpstorm'е сравнил.
Подобные утилиты есть практически в любой IDE, есть и в виде отдельных программ, и консольный diff конечно-же.
Смешались в кучу кони, люди.
А всего-то нужен онлайн переводчик и немного здравого смысла
- development в переводе с английского означает "разработка", то есть процесс создания программы, когда программист является единственным пользователем
- production в переводе с английского означает "работа в штатном режиме", то есть это когда разработка уже закончена и приложение установлено на сервер и у него тыщи пользователей, среди которых нет программиста
Как ты думаешь, какое из них тебе подходит?
И тут возникает вопрос
Кто тебе мешал использовать тот РНР который у тебя уже есть, и зачем понадобилось скачивать ещё один?
Что такое "системный РНР" и чем он отличается от "несистемного"?
можно ссылку, пожалуйста? Не нашел такого перевода.
Впрочем, как бы то ни было, я писал, что эти два файла - одинаковы. Такой вывод я сделал, исходя из того, что размер обоих файлов совпадает до байта.
Кто тебе мешал использовать тот РНР который у тебя уже есть, и зачем понадобилось скачивать ещё один?
Затем, что XAMPP при каждом перезапуске сервера сбрасывает свой php.ini на дефолт. Соответственно, настраивать его можно до посинения - результат не сохраняется.
Читайте также: