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
$ sudo find / -name php.ini
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
I also did….
$ sudo php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
I changed all of them (just to be sure) to the settings I wanted.
I restarted apache using
sudo service apache2 restart
The results…
* Restarting web server apache2
I reloaded the page and it showed that the php.ini file was not updated.
I know this because I used
echo ini_get('post_max_size');
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?
On the command line execute:
php --ini
You will get something like:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini
That’s from my local dev-machine. However, the second line is the interesting one. If there is nothing mentioned, have a look at the first one. That is the path, where PHP looks for the php.ini
file.
You can grep the same information using phpinfo() in a script and call it with a browser. It’s mentioned in the first block of the output. php -i
does the same for the command line, but it’s quite uncomfortable.
php.ini file location.
What is the php.ini file, why we use it ? Where do I find this file on Ubuntu ? How I open and edit the php.ini file on a terminal. This is the most common questions asked by beginners who are either new to PHP or Linux.
php.ini File
The php.ini file is a default configuration file used when your PHP application runs. When PHP starts it reads the configuration setting from the php.ini file.
If you have installed LAMP on a Ubuntu operating system and unable to find and edit this file then this tutorial is for you.
PHP Script to Find php.ini Location
If you are working on Windows, Ubuntu or any operating system. You can easily find the location of php.ini configuration file using simple PHP script.
Create a PHP file. Let’s name it inipath.php (you can choose any name with a .php extension) .
Open this file in your browser and you will get the path of the php.ini.
I am using Ubuntu and the location of php.ini in Ubuntu is /etc/php5/apache2/php.ini . Similarly, if you are running this script on Windows and Mac you’ll get the path as per their directory structure.
For version 7.4.3, the php.ini path is /etc/php/7.4/apache2/php.ini.
php.ini File Location in Ubuntu
For PHP5
The path of php.ini in Ubuntu is /etc/php5/apache2 . Open the terminal and start typing following commands.
$ cd /etc/php5/apache2 $ ls |
To view the files present in apache2 directory, type ls command. The files present in this directory (conf.d and php.ini) are displayed.
For PHP 7.4 version
The path of php.ini is
$ cd /etc/php/7.4/apache2 $ ls |
If you are not familiar with Linux commands then read my previous post on Linux Commands with Examples .
The other easiest way to locate the php.ini location is using locate command.
How to open & edit the php.ini configuration file on a Terminal
To open & edit the php.ini file I am using vim/vi editor.
Read more about Beginners guide for vi/vim editor.
You can directly open this file using the following command.
$ sudo vim /etc/php5/apache2/php.ini |
NOTE – Once you have done the changes in the php.ini file. You need to restart the apache web server so that the new changes get reflected.
To restart the Apache WebServer.
$ sudo /etc/init.d/apache2 restart |
or
$ sudo service apache2 restart |
Popular PHP Articles
Abstract vs Interface in PHP
Abstract class in PHP
Programming Videos Tutorial
Conclusion
I hope this tutorial helped you to find and edit the php.ini file. If you are still facing any issue you can ask your question through comments.
PHP – это один из самых популярных языков программирования для создания сайтов и веб-приложений. На нем разработано множество готовых систем управления контентом для блогов, сайтов фирм или даже интернет-магазинов. Несмотря на то что у этого языка есть свои недостатки, он достаточно прост в освоении и поэтому очень часто используется для разработки новых сайтов.
Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.
Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.
Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:
ls /etc/php5/
Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки – apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.
Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл php.ini.
Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:
имя_настройки=значение_параметра
Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.
Настройка файла php.ini
Для удобства ориентирования мы разобьем все параметры по категориях в зависимости от их назначения. Вам будет достаточно найти нужный параметр и изменить его значение. А теперь откройте файл настроек php, например, для модуля apache и перейдем к настройке. Чтобы избежать ошибок не добавляйте новые строки, а ищите уже существующие и изменяйте значения на нужные:
sudo gedit /etc/php5/apache/php.ini
Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.
Вывод ошибок в php
Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:
display_errors=off
Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:
error_reporting = E_ALL & ~E_DEPRECATED
Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак ~. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:
error_reporting = 0
Включите запись ошибок php в лог файл, если не выводите их на экран:
log_errors = On
Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:
ignore_repeated_errors = On
Ограничения ресурсов
Если бы скрипты php никак не ограничивались в ресурсах, то они запросто могли бы перегрузить сервер и не дать ему нормально работать. Поэтому, по умолчанию php устанавливает жесткие ограничения, но, возможно, вам нужно будет их немного ослабить.
По умолчанию максимальное время выполнения скрипта – 30 секунд, сделаем минуту:
max_execution_time = 30
Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:
max_input_time=60
Максимальное количество переменных в GET и POST:
max_input_vars = 1000
Следующий параметр задает максимальное количество памяти, которую может использовать один скрипт во время своего выполнения, в мегабайтах:
memory_limit = 128M
Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию – 8 Мегабайт:
post_max_size = 8M
Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:
open_basedir = /var/www/
С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:
disable_functions = ini_set
Директории по умолчанию
Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:
include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"
Папка с модулями php:
extension_dir="./"
Папка для записи временных файлов:
sys_temp_dir = "/tmp"
Загрузка файлов
Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:
file_uploads = On
Максимальный размер загружаемого файла:
upload_max_filesize = 2M
Максимальное количество файлов, которые может загрузить один скрипт:
max_file_uploads = 20
Настройка php.ini практически завершена, нам остались лишь расширения.
Настройка расширений
Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.
Для включения расширения достаточно убрать комментарий перед строкой с его командой, например:
extension=php_mysql.so
extension=php_mbstring.so
extension=php_pgsql.so
Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.
Выводы
В этой статье мы рассмотрели как выполняется настройка php на сервере или обычном компьютере для разработки веб-сайтов. Файл настроек php имеет довольно простую структуру и с ним довольно не сложно справиться. После завершения всех настроек и сохранения изменений не забудьте перезагрузить веб-сервер или сервис php-fpm.
Вообще говоря, php-fpm это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
In this post, we will learn How to find php.ini Location on Ubuntu 20.04. In most cases, we find the php.ini file in the server but we did not find the php.ini file, so in this tutorial, how to find the location of the loaded php.ini. file. we check two ways to find php.ini file. first How to find the location of php.ini from the command line and How to find the location of php.ini by using the phpinfo() function.
Location of php.ini on Ubuntu 20.04
Find location of php.ini by using the phpinfo()
Create a file phpinfo.php within your web-server root directory eg. /var/www/html/
with the following content:
<?php #phpinfo.php // show all information phpinfo();
Find location of php.ini from command line
Find the location of php.ini from the command line execute the following command to locate the loaded php.ini configuration file for the command line PHP command:
php --ini | grep Loaded
Loaded Configuration File: /etc/php/7.3/cli/php.ini
Note: The above php.ini file location is used by the PHP command.
For the Apache web-server the above path will translate to:
/etc/php/7.3/apache2/php.ini
For Nginx or Apache with PHP-FPM:
/etc/php/7.3/fpm/php.ini