2012-02-13 5 views
5

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

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

ответ

9

Добавьте к конфигурации сервера ...

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

Убедитесь, что просто указать путь к каталогу, а не весь путь к файлу.

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

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

+0

Хм ... Это сработает, но у меня нет доступа к этой конфигурации сервера. –

+0

@Kolink Если у вас нет доступа к этому, обратитесь к вашему хосту. Возможно, они уже что-то придумали. – alex

+0

Хорошо, спасибо. Я буду. :) –

3

Обратитесь к разделу .user.ini в php docs.

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

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

+1

Вы пропустили, чтобы процитировать очень важную часть: _Since PHP 5.3.0, PHP включает поддержку конфигурационных INI-файлов для каждого каталога. ** Эти файлы обрабатываются только CGI/FastCGI SAPI ** _ – lucaferrario

0

Колинк, я подозреваю, что вы находитесь в общедоступном хостинговом сервисе, и в этом случае ваш хост может использовать что-то, называемое 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().

+0

Фактически, я нахожусь в VDS в этом случае. В любом случае, получается suPHP_ConfigPath - это ответ (я спросил у хозяина об этом). –

+0

? VDS? а не аббревиатурой, с которой я столкнулся. Если вы имеете в виду VPS, то почему именно вы настроили его для suPHP ?. Единственной логической причиной использования suPHP является включение контроля доступа на основе UID для поддержания разделения между cohosted аккаунтами. – TerryE

+0

Виртуальный выделенный сервер. Честно говоря, мне все равно, как это работает, пока оно работает, и делает то, что я ему говорю. –

Смежные вопросы