Apache-2.2

如何在執行 Apache 的共享主機上配置多個 PHP.INI 文件?

  • April 19, 2013

我想為託管在共享伺服器上的每個站點使用不同的 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 me@my-domain.com
   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 錯誤日誌。

解決方案是在 vhost 配置文件中添加一行來設置我需要的特定 PHP 值。因此,我沒有在每個站點的自定義 PHP.INI 文件中設置路徑,而是php_error.log根據需要修改了每個站點的 vhosts 配置文件。

所以我的虛擬主機配置文件現在是這樣的……

<VirtualHost 123.54.67.89:80>
  ServerAdmin me@my-domain.com
  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 的其他地方找到了解決方案。

你已經用 apache 的 mod_fastcgi 檢查了 php-fpm 了嗎?它允許您通過池準確定義所需的配置,甚至可以對使用者進行 chroot!;)

引用自:https://serverfault.com/questions/232079