我最近切换到fastcgi,现在我有一个问题,设置以前在.htaccess中设置的php include路径:
php_value include_path "[INCLUDE PATH]"
由于开关,这会出错:
无效的命令'php_value',可能拼写错误或由模块定义 未包含在服务器配置中
根据我的理解,'php_value'无法通过htaccess使用fastcgi设置。
有没有办法绕过这个或全局指定包含子目录的整个站点的php include路径,例如通过apache配置?
我知道我可以在php中的每个脚本上手动设置包含路径,或者我可以在目录中的php.ini中指定包含路径,但网站已经建立了许多文件和目录,这将是麻烦的遍历每个文件和目录以复制新的包含路径或php.ini文件。
答案 0 :(得分:2)
你很幸运,因为只有PHP模块支持php_value
和php_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()
]));