Проверяет ли PHP автоматически INI-файлы (т.е. INI-файлы в стиле .user.ini (файлы .htaccess в случае PHP, работающего как модуль Apache)) в каждом каталоге? - PullRequest
0 голосов
/ 29 сентября 2018

Я использую PHP 7.2.10 на моем ноутбуке, который работает в 64-разрядной операционной системе Windows 10 Home Single Language .

Я установил последнюю версию установщика XAMPP на свой ноутбук, на котором установлена ​​ Apache / 2.4.34 (Win32)

Iвстретите следующий текст из PHP Manual :

.user.ini файлы

Начиная с PHP 5.3.0, PHP включает поддержкудля конфигурации файлов INI для каждого каталога.Эти файлы обрабатываются только CGI / FastCGI SAPI.Эта функция устаревает расширение PECL htscanner.Если вы используете PHP как модуль Apache, используйте .htaccess файлы для того же эффекта.

В дополнение к основному файлу php.ini, PHP сканирует INI-файлы в каждом каталоге, начиная с каталогазапрошенный PHP-файл и работает до корневого каталога текущего документа (как установлено в $_SERVER['DOCUMENT_ROOT']).Если файл PHP находится за пределами корня документа, сканируется только его каталог.

Только параметры INI с режимами PHP_INI_PERDIR и PHP_INI_USER будут распознаваться в .userINI-файлы в стиле .ini.

Две новые директивы INI, user_ini.filename и user_ini.cache_ttl контролируют использование пользовательских INI-файлов.

user_ini.filename устанавливает имя файла, который ищет PHP в каждом каталоге;если задана пустая строка, PHP вообще не сканирует.По умолчанию .user.ini .

user_ini.cache_ttl контролирует частоту повторного чтения пользовательских файлов INI.По умолчанию это 300 секунд (5 минут).

Ниже приведены сомнения, которые возникли у меня в голове после прочтения вышеприведенного текста:

  1. Сканирует ли PHP автоматически INI files (то есть .user.ini-style INI files (.htaccess files в случае PHP, работающего как модуль Apache)) в каждом каталоге?Я имею в виду, не нужно ли указывать каталоги проекта, которые содержат INI files (то есть .user.ini-style INI files (.htaccess files в случае PHP, работающего как модуль Apache))?
  2. Это обязательно длякаждый каталог проекта должен иметь INI files (то есть .user.ini-style INI files (.htaccess files в случае PHP, работающего как модуль Apache))?
  3. Делать INI files (то есть .user.ini-style INI files (.htaccess files)в случае PHP, работающего как модуль Apache)) присутствующие в разных каталогах проекта могут иметь одинаковые директивы с разными значениями, либо отсутствовать некоторые директивы, либо иметь дополнительные директивы?
  4. Как можно установить директивы PHP вфайл .htaccess, связанный с веб-сервером Apache ?
  5. Что на самом деле означает выражение 'PHP сканирует файлы INI в каждом каталоге' ?Означает ли это, что PHP-парсер читает INI-файлы в каждом каталоге ?

Пожалуйста, предоставьте ответы на все мои вопросы в пошаговом порядке.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

1 - Да, если в каталоге есть пользовательский INI PHP и / или файл .htaccess, это будет прочитано и переопределит систему php.ini

2 - Нет, это не требуетсяналичие файла PHP INI или htaccess в каждом каталоге, и большинство хостингов не позволяют использовать пользовательские файлы PHP INI и отключает использование «php_value» из файлов htaccess.

3 - файл PHP INI сканируется из корневого каталога в текущий каталог.Например, если максимальный размер загрузки по умолчанию составляет 50 МБ, а для корневого каталога PHP INI установлено значение 100 МБ, то значение 100 МБ вступает в силу.Но если вы находитесь в каталоге «Admin» и в нем есть php ini-файл с максимальным размером загрузки, равным 20 МБ, то при загрузке с пути / admin и всех дочерних путей вы будете ограничены 20 МБ файлами (если они не имеют своихсобственный файл PHP INI).

4 - В файле .htaccess вы можете использовать «php_value», если ваш веб-хостинг это позволяет.Например,

php_value upload_max_filesize 100M

Более подробное объяснение см. Здесь: Переопределение php.ini на сервере

5 - Как я уже говорил в пункте 3. INI-файл PHPсканируется из корневого каталога до текущего каталога.Например, если путь - / admin / advanced, он сначала просматривает системный PHP INI, затем проверяет корневой каталог (/), переопределение и значения, затем идет в каталог администратора, переопределение и значения и, наконец, расширенный каталог.

Стоит отметить, что если вы планируете использовать Shared Hosting, то, скорее всего, вы не сможете использовать свои собственные файлы INI PHP и не сможете использовать php_value в HTACCESS, так как большинство провайдеров склонны отключать этифункции.

Подробнее см. в руководстве по PHP:

А для переопределения Apache:

0 голосов
/ 29 сентября 2018
  1. Да, но будут затронуты только скрипты, работающие в этом каталоге.
  2. Нет, это не так, пользовательские ini-файлы должны перезаписывать настройки сервера по умолчанию.
  3. Да, они могут, но самые низкиев дереве будет перезаписан родитель.

4:

#format
php_value setting_name setting_value

#example
php_value  upload_max_filesize  10M
Я не знаю

Всю информацию можно найти в Руководстве: http://php.net/manual/en/configuration.phpОбратите внимание, что вы не можете установить все конфигурации в файлах user.ini и .htaccess.Для получения дополнительной информации см. Здесь: http://php.net/manual/en/configuration.changes.modes.php.

Также обратите внимание, что файлы user.ini могут быть отключены в конфигурации сервера.

...