Возможно ли иметь только один файл 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()
.