Я хотел бы использовать разные файлы 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!
Установка PHPINIDir
Директива только в одном из файлов vhosts работает, но затем каждый сайт получает этот файл PHP.INI.
Мы запускаем PHP5.3.2 на Ubuntu 10.04.
Любые предложения о том, как этого добиться?
P.S. Суть в том, чтобы каждый сайт создавал собственный журнал ошибок PHP.
Вы уже проверяли php-fpm с помощью apache mod_fastcgi? Это позволяет вам точно определять нужную конфигурацию через пулы, и вы даже можете chroot пользователей! ;)
Решение заключалось в том, чтобы добавить строку в файл конфигурации vhost, которая устанавливает необходимое мне значение PHP. Поэтому вместо того, чтобы указывать путь к php_error.log
в настраиваемом файле PHP.INI для каждого сайта я изменил конфигурационный файл vhosts для каждого сайта по мере необходимости.
Итак, мой файл конфигурации vhost теперь выглядит так ...
<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.