如何在运行 Apache 的共享主机上配置多个 PHP.INI 文件?

如何在运行 Apache 的共享主机上配置多个 PHP.INI 文件?

我想对共享服务器上托管的每个站点使用不同的 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 上的其他地方

相关内容