我正在尝试使用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代码。
如前所述,我仍然得到上述错误。我做错了什么?
感谢。
答案 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)
这里有两个潜在的问题。
也许browscap不喜欢你提供的路径。尝试:
php_value browscap /home/hostname/subdomain/php_browscap.ini
确保该文件的权限允许网络用户阅读。
答案 3 :(得分:0)
如果您在共享主机上并且无法访问系统php.ini,那么您可以使用以下独立替换php的本机“get_browser()”实现。