在服务器上使用htaccess更改PHP.ini

时间:2012-02-25 12:58:58

标签: php .htaccess browscap

我正在尝试使用PHP的内置函数 get_browser() 。我按照this useful post中的说明操作,但我仍然收到错误

  

没有设置browscap ini指令。

我下载了php_browscap.ini文件并将其移动到与我的.htaccess文件相同的目录中,因此其位置为 home / hostname / subdomain / php_browscap.ini 由于我没有访问权限到我的 php.ini 文件,我正在尝试使用.htaccess编辑browscap属性。这就是我输入的内容:

php_value browscap home/hostname/subdomain/php_browscap.ini

我不知道它是否重要,但是下面有一些Rewrite Engine代码。

如前所述,我仍然得到上述错误。我做错了什么?

感谢。

4 个答案:

答案 0 :(得分:3)

执行phpinfo()以了解您的PHP运行时配置。如果您的系统配置为“CGI / FastCGI”,那么它可能正在运行suPHP作为PHP启动器。 在这种情况下,您可以指定自己的php.ini文件。默认情况下,suPHP在脚本目录中查找,但您可以通过.htaccess文件中的以下指令覆盖它:

<击>
suPHP_ConfigPath (expects a path name)
     

该选项告诉mod_suphp传递给PHP解释器的路径(通过设置PHPRC环境变量)。 NOT 是指文件,而是指文件所在的目录。

     

例如:如果你想使用“/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(phpinfo()告诉您在哪里找到它)复制到私人目录中来覆盖php.ini补丁,例如 _private 以及browsercap.ini然后添加

SetEnv PHPRC /home/hostname/_private

到你的.htaccess文件。如果这不起作用,则该问题特定于Dreamhost的suEXEC配置,您需要在http://discussion.dreamhost.com/上询问此问题

答案 1 :(得分:2)

browscap PHP值的可更改模式为PHP_INI_SYSTEM,这意味着它只能在php.ini或httpd.conf中设置(不是.htaccess)。

答案 2 :(得分:0)

这里有两个潜在的问题。

  1. 也许您的主机不允许您覆盖.htaccess文件中的ini设置。
  2. 也许browscap不喜欢你提供的路径。尝试:

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

    确保该文件的权限允许网络用户阅读。

答案 3 :(得分:0)

如果您在共享主机上并且无法访问系统php.ini,那么您可以使用以下独立替换php的本机“get_browser()”实现。

https://github.com/garetjax/phpbrowscap