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

标签 php apache .htaccess include-path

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

php_value include_path "[INCLUDE PATH]"

由于切换,这给出了错误:

Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration

据我所知,'php_value' 不能通过 htaccess 和 fastcgi 设置。

有什么方法可以解决这个问题或全局指定带有子目录的整个站点的 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()
]));

关于php - 使用 apache 配置为每个站点指定 PHP 包含目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171622/

相关文章:

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - 如何在 PHP + MYSQL 中验证字符串?

java - 默认页面上的应用程序- tomcat/java

java - Cloudera:在HDFS异常中上传文件

php - 在aws中配置httpd conf

PHP:选择更改时,将表单发布给自己

php - 如何为网站上的每个页面创建类似 url 的目录

apache - 创建 .htaccess 文件(Ubuntu Server 12.04 w/Apache2)

regex - htaccess 重定向子文件夹和文件的正则表达式,而不是父文件夹

php - 使用 Android 从在线 MySQL 数据库中获取数据