4

我最近切换到 fastcgi,现在我将之前在 .htaccess 中设置的 php 包含路径设置为:

php_value include_path "[INCLUDE PATH]"

自切换以来,这给出了错误:

无效的命令“php_value”,可能拼写错误或由服务器配置中未包含的模块定义

据我了解,'php_value' 不能通过带有 fastcgi 的 htaccess 设置。

有什么方法可以解决这个问题或全局指定具有子目录的整个站点的 php 包含路径,例如通过 apache 配置?

我知道我可以在php中手动设置每个脚本的包含路径,或者我可以在目录中的php.ini中指定包含路径,但是网站已经建立了许多文件和目录,通过它会很麻烦每个文件和目录复制新的包含路径或 php.ini 文件。

4

1 回答 1

3

你很不走运,因为只有 PHP 模块支持php_valueandphp_flag指令。

您可以做的是php.ini为每个网站创建一个文件。从内存中,您将需要这是一个完整php.ini文件,因为新文件将完全覆盖系统文件。

一种简单的方法是复制系统文件,然后添加您的自定义属性,例如

cp /usr/share/php5/php.ini /path/to/site/php.d/php.ini \
&& echo 'include_path = "[INCLUDE PATH]"' >> /path/to/site/php.d/php.ini

然后,在站点的.htaccess文件中,设置PHPRC环境变量。这是为了避免必须将php.ini文件添加到每个目录中。

SetEnv PHPRC /path/to/site/php.d

但理想情况下,每个站点都应该在代码中处理好自己include_path的代码。这将使您的应用程序更加便携。

set_include_path(implode(PATH_SEPARATOR, [
    '[INCLUDE_PATH'],
    get_include_path()
]));
于 2013-10-04T01:46:35.060 回答