Назад | Перейти на главную страницу

Как настроить несколько файлов PHP.INI на общем хосте, на котором запущен Apache?

Я хотел бы использовать разные файлы 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.