Ale*_*x G 4 freebsd php apache-2.2
其中一位客户要求为他的网站进行个人 php.ini 配置,因此我将他的 VirtualHost 设置如下:
<VirtualHost *:80>
DocumentRoot "/home/alex/www.domain.tld"
ServerName www.domain.tld
AssignUserID alex alex
PHPINIDir /home/alex/php.ini
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
客户端在 /home/alex/ 下创建了 php.ini 文件,其中仅包含以下设置:
session.save_path = "/home/alex/.php_sessions/"
完成此操作后,他开始抱怨他看到了其他客户网站生成的所有其他会话文件。
在做了一些基本的故障排除后,我意识到他的 php.ini 设置影响了 httpd-vhosts.conf 中指定的所有网站。
问题是为什么?由于PHPINIDir
仅在一个特定的VirtualHost
?
单个虚拟主机不能拥有自己的虚拟主机,PHPINIDir
因为php.ini
在 apache+mod_php 启动时读取文件,甚至在它开始处理请求之前。无论出于何种原因,该指令不会对此用法发出警告,而是设置全局 INI 目录并继续其愉快的方式。
相反,你必须使用php_value
,php_flag
,php_admin_value
和php_admin_flag
Apache指令覆盖所需的特定设置该虚拟主机。(见这里)在这种情况下,你会这样做:
<VirtualHost *:80>
DocumentRoot "/home/alex/www.domain.tld"
ServerName www.domain.tld
AssignUserID alex alex
php_value session.save_path "/home/alex/.php_sessions/"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将加载默认php.ini
文件,然后更改session.save_path
到给定目录,仅用于此虚拟主机。
归档时间: |
|
查看次数: |
11690 次 |
最近记录: |