我想对共享服务器上托管的每个站点使用不同的 PHP.INI 文件。
我修改了每个站点的 Apache vhosts 文件,添加了以下行……
PHPINIDir /srv/www/my-domain.com/
因此 vhosts 文件/etc/apache2/sites-enabled/my-domain.com
现在的内容如下……
<VirtualHost 123.54.67.89:80>
ServerAdmin [email protected]
ServerName my-domain.com
ServerAlias www.my-domain.com
DocumentRoot /srv/www/my-domain.com/www/
ErrorLog /srv/www/my-domain.com/logs/error.log
CustomLog /srv/www/my-domain.com/logs/access.log combined
PHPINIDir /srv/www/my-domain.com/
</VirtualHost>
重新加载 Apache 时出现以下错误。
Syntax error on line 8 of /etc/apache2/sites-enabled/my-domain.com:
Only first PHPINIDir directive honored per configuration tree - subsequent ones ignored
...fail!
仅在其中一个 vhosts 文件中设置PHPINIDir
指令即可,但随后每个站点都会选择该 PHP.INI 文件。
我们在 Ubuntu 10.04 上运行 PHP5.3.2。
关于如何实现这一点有什么建议吗?
PS 这样做的目的是让每个站点生成自己的 PHP 错误日志。
答案1
您已经使用 apache 的 mod_fastcgi 检查过 php-fpm 了吗?它允许您通过池精确定义所需的配置,甚至可以 chroot 用户!;)
答案2
解决方案是在 vhost 配置文件中添加一行,设置我需要的特定 PHP 值。因此,php_error.log
我没有在每个站点的自定义 PHP.INI 文件中设置路径,而是根据需要修改了每个站点的 vhosts 配置文件。
因此我的 vhost 配置文件现在内容如下……
<VirtualHost 123.54.67.89:80>
ServerAdmin [email protected]
ServerName my-domain.com
ServerAlias www.my-domain.com
DocumentRoot /srv/www/my-domain.com/www/
ErrorLog /srv/www/my-domain.com/logs/error.log
CustomLog /srv/www/my-domain.com/logs/access.log combined
php_value error_log /srv/www/my-domain.com/logs/php_error.log
</VirtualHost>
我找到了解决方案ServerFault 上的其他地方。