【问题标题】:Changing PHP.ini using htaccess on a Server在服务器上使用 htaccess 更改 PHP.ini
【发布时间】:2012-03-15 16:44:54
【问题描述】:

我正在尝试使用 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 代码。

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

谢谢。

【问题讨论】:

    标签: php .htaccess browscap


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      执行 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/ 上询问此 Q

      【讨论】:

        【解决方案3】:

        这里有两个潜在的问题。

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

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

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

        【讨论】:

        • DreamHost 在wiki.dreamhost.com/PHP.ini 有针对这个问题的文档,并且网络用户是网络服务器(例如 Apache)运行的系统使用。在 Debian 上,这个用法是 www-data.
        • @Treffynnon,Dreamhost 提供一系列托管计划。如果您阅读参考资料,很明显这与 VPS 产品有关。 This wiki reference 暗示 Dreamhost 使用 suEXEC 而不是 suPHP 作为其包装器。
        • @TerryE 当然。 OP没有说明他们的计划,所以没有什么可继续的。它没有理由不能成为 VPS。
        • 当然,我同意你的观点。目前还不清楚。我已经养成了提前询问这个 Q 的习惯,或者几乎是这样,因为我的工作假设是,如果他们在谈论 htaccess,那么他们正在运行共享托管计划。如果您可以访问虚拟主机配置,那么您应该避免使用 htaccess,如果可行,甚至禁用它。
        【解决方案4】:

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

        https://github.com/garetjax/phpbrowscap

        【讨论】:

          猜你喜欢
          • 2012-08-19
          • 2017-08-29
          • 1970-01-01
          • 1970-01-01
          • 2021-08-31
          • 2012-02-07
          • 2014-07-29
          • 2015-09-06
          相关资源
          最近更新 更多