Установить путь к php.ini

Возможно ли иметь только один файл php.ini, например, в webroot (или даже за его пределами, чтобы люди не могли его получить через GET) и быстро и легко сказать PHP, где он находится?

Я знаю, что вы можете установить директивы php.ini в .htaccess , но можно ли определить конкретный файл php.ini для использования?

Добавьте это в конфигурацию вашего сервера …

 <VirtualHost 1.2.3.4:80> PHPINIDir /path/to/new/php_ini </VirtualHost> 

Обязательно укажите путь к каталогу, а не весь путь к файлу.

Затем перезапустите Apache.

Проверьте, работает ли он с phpinfo() .

Посмотрите раздел .user.ini в php docs.

Начиная с PHP 5.3.0, PHP включает поддержку INI-файлов типа .htaccess для каждого каталога.

Но помимо решения .unser.ini вы можете поместить дополнительный файл ini в директорию «Дополнительные файлы .ini». Там вы можете использовать один файл ini для перезаписывания всех других параметров. Назовите его с помощью zzz в начале, и он будет обработан последним. Это также легко для вашего хостера развертывать без разрушения его настроек.

Колинк, я подозреваю, что вы используете общий хостинг, и в этом случае ваш хост может использовать что-то, называемое suPHP. В этом случае – как вы описали – директива PHPINIDir не работает, и в этом случае существует директива suPHP_ConfigPath .

Что касается доступа, у меня есть стандартный mod_rewrite в моем DOCROOT/.htaccess :

 RewriteEngine On RewriteBase / # if a forbidden directory or file name (starting with a . or /) then raise 404 Fatal RewriteRule (^|/)[_.] - [F] 

Это запрещает любой запрос для любого имени файла или каталога с префиксом . или _ . У меня есть DOCROOT/_private где я храню этот материал для меня:

 suPHP_ConfigPath DOCROOT/_private 

где вам нужно будет заменить DOCROOT на локальные настройки в вашем сервисе. Найдите DOCUMENT_ROOT в phpinfo() .