使用 apache 配置为每个站点指定 PHP 包含目录


Using apache configuration to specify PHP include directory for each site

我最近切换到fastcgi,现在我在设置之前在.htaccess中设置的php包含路径时遇到了问题:

php_value include_path "[INCLUDE PATH]"

自切换以来,这会产生错误:

无效的命令"php_value",可能拼写错误或由模块定义 不包括在服务器配置中

据我了解,"php_value"不能通过 fastcgi 的 htaccess 进行设置。

有没有办法解决这个问题或全局指定带有子目录的整个站点的 php 包含路径,例如通过 apache 配置?

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

你很

不走运,因为只有PHP模块支持php_valuephp_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()
]));