【问题标题】:Using "auto_prepend_file" into ".user.ini" file in PHP在 PHP 中使用“auto_prepend_file”到“.user.ini”文件中
【发布时间】:2014-09-06 20:36:48
【问题描述】:

我想在项目的任何页面运行时加载文件variables.php(仅包含变量),以便我可以在任何地方使用变量。

我创建了一个名为.user.ini 的文件(并将其放在根文件夹中):

; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
auto_prepend_file = /Volumes/www/project_name/admin/libs/variables.php

它不起作用。似乎 PHP 没有读取 .user.ini 文件。

php.ini默认配置正确:

user_ini.cache_ttl    300           300
user_ini.filename     .user.ini     .user.ini

我哪里错了?

【问题讨论】:

  • 你能把这个文件的确切位置,即d:/.user.ini,看看它是否有效
  • 您的 PHP 解释器是否作为 CGI、FastCGI 或类似的 SAPI 运行?
  • 来自文档:“文件被包含,就好像它是用 require 函数调用的一样,所以使用了 include_path。”您是否介意将它放在文件夹中,Web 服务器可以访问并提供包含的相对路径(例如 admin/libs/variables.php)?
  • @Satya:上面的路径是我的文件系统(mac osx)上的确切位置
  • @mudasobwa: 尝试使用相对路径但还不行

标签: php ini


【解决方案1】:

我认为.user.ini应该位于project根文件夹,例如/Volumes/www/project_name/.user.ini

除了主 php.ini 文件之外,PHP 还会扫描每个文件中的 INI 文件 目录,从请求的 PHP 文件的目录开始,以及 一直到当前文档根目录(如在 $_SERVER['DOCUMENT_ROOT'])。如果 PHP 文件不在 文档根目录,只扫描其目录。

.user.ini documentation

【讨论】:

  • 来自您的链接:«自 PHP 5.3.0 起,PHP 包含对每个目录的配置 INI 文件的支持。
  • 尝试将 .user.ini 放在根文件夹中,但还不行
【解决方案2】:

好吧,the manual says it all

自 PHP 5.3.0 起,PHP 包含对配置 INI 文件的支持 每个目录的基础。 这些文件仅由 CGI/FastCGI 处理 SAPI。此功能淘汰了 PECL htscanner 扩展。

还有:

如果您使用的是 Apache,请使用 .htaccess 文件以获得相同的效果。

...虽然它实际上是指 Apache 模块 (mod_php)。

如果您需要独立于 SAPI 的自定义设置,恐怕您必须同时使用两者。如果将这些设置保持在最低限度,则可以最大限度地减少维护负担(大多数 PHP 指令可以在 PHP 代码本身中提供)。并且您需要确保.htaccess 设置在mod_php 不可用时不会崩溃:

<IfModule mod_php5.c>
    php_value auto_prepend_file /Volumes/www/project_name/admin/libs/variables.php
</IfModule>

【讨论】:

  • 很好,在 apache2handler 上它可以工作(使用 htaccess),但在 cgi 上我遇到了这个问题:浏览器继续加载一段时间,然后它显示页面,其中包含关于使用的任何 php 函数的一堆错误该页面,但我知道它已加载 variables.php 文件,因为测试回显。
  • 好吧,如果代码不正确,那么你如何加载它并不重要:-?
猜你喜欢
  • 2015-11-17
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2014-08-14
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多