Изменение PHP.ini с использованием htaccess на сервере - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь использовать встроенную функцию PHP get_browser () . Я следовал инструкциям в этом полезном посте , но я все еще получаю сообщение об ошибке

директива browscap ini не установлена.

Я скачал файл php_browscap.ini и переместил его в тот же каталог, где находится мой файл .htaccess, так что его местоположение home / hostname / subdomain / php_browscap.ini Поскольку у меня нет доступа к мой php.ini файл, я пытаюсь отредактировать свойство browscap с помощью .htaccess. Вот что я ввел:

php_value browscap home/hostname/subdomain/php_browscap.ini

Не знаю, имеет ли это значение, но ниже приведен код Rewrite Engine.

Как уже упоминалось, я все еще получаю ошибку выше. Что я сделал не так?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 25 февраля 2012

Сделайте phpinfo (), чтобы понять вашу конфигурацию времени выполнения PHP. Если ваша система настроена как «CGI / FastCGI», то, вероятно, она запускает suPHP в качестве инициатора PHP. В этом случае вы можете указать свой собственный файл php.ini. По умолчанию suPHP ищет в каталоге скриптов, но вы можете переопределить это с помощью следующей директивы в вашем файле .htaccess:

suPHP_ConfigPath (expects a path name)

Эта опция указывает mod_suphp, какой путь передать PHP-интерпретатору (путем установки переменной среды PHPRC). НЕ относится к файлу, но к каталогу, в котором находится файл.

Например: если вы хотите использовать "/path/to/server/config/php.ini", используйте "suPHP_Config / path / to / server / config".

Если вы не используете эту опцию, PHP будет использовать его скомпилированный по умолчанию путь. Также вы должны использовать правильно сформированный путь в директиве browsercap, например

browscap="/home/hostname/subdomain/php_browscap.ini"

(обратите внимание на ведущий / )

Добавление

Я только что проверил, и план общего хостинга Dreamhost использует suEXEC. С suEXEC вы обычно можете переопределить патч php.ini, скопировав системный php.ini (phpinfo () скажет вам, где его найти) в частный каталог, скажем, _private , а затем browsercap.ini добавление

SetEnv PHPRC /home/hostname/_private

в ваш файл .htaccess. Если это не работает, то проблема связана с конфигурацией suEXEC Dreamhost, и вам нужно задать этот вопрос на http://discussion.dreamhost.com/

2 голосов
/ 25 февраля 2012

Значение PHP browscap имеет изменяемый режим PHP_INI_SYSTEM, что означает, что его можно установить только в php.ini или httpd.conf (не .htaccess).

0 голосов
/ 25 февраля 2012

Если вы пользуетесь виртуальным хостингом и не имеете доступа к системе php.ini, вы можете использовать следующую автономную замену нативной реализации php "get_browser ()".

https://github.com/garetjax/phpbrowscap

0 голосов
/ 25 февраля 2012

Здесь есть две потенциальные проблемы.

  1. Возможно, ваш хост не позволяет вам переопределить настройки ini в файле .htaccess.
  2. Возможно, browscap не нравится путь, который вы указали. Попробуйте:

    php_value browscap /home/hostname/subdomain/php_browscap.ini
    

    И убедитесь, что разрешения для этого файла позволяют веб-пользователю читать его.

...