Как настроить файлы php.ini для каждого сайта на сервере LAMP с помощью NameVirtualHosts?

10

У меня есть сервер LAMP, обслуживающий несколько различных веб-сайтов, использующих NameVirtualHosts .

До недавнего времени иметь глобальный файл php.ini было просто замечательно, но недавно один из наших разработчиков запросил некоторые настройки в php.ini, которые я не хотел бы устанавливать глобально.

Я почти уверен, что слышал, что вы можете настроить файлы php.ini для каждого сайта , но не знаете, как это сделать.

Может ли кто-нибудь указать мне правильное направление относительно того, как этого добиться?

казарка
источник

Ответы:

14

Большинство настроек, которые вы бы поместили в свой php.ini, также можно поместить в .htaccess или в конфигурацию apache для этого сайта. Например, один из моих виртуальных хостов имеет это в .htaccess

    php_value display_errors 1
    php_value register_globals 0
    php_value short_open_tag 0
    php_value magic_quotes_runtime 0
    php_value magic_quotes_gpc 0
    php_value session.name "PHPSESSID_SITEBLAH"
    php_value session.gc_maxlifetime 57600
    php_value session.gc_probability 1
    php_value session.gc_divisor 500
Zoredache
источник
Это не похоже на работу для меня. Есть ли какая-то директива, которую нужно установить в главном php.ini, чтобы это разрешить?
Brent
1
«Параметры AllowOverride» или «AllowOverride All» должны быть установлены в конфигурации APache, чтобы это работало.
StackKrish
Могут ли значения, например, apache.confперезаписать значения в вашем php.iniфайле или наоборот?
Пук
7

Вы также можете указать параметры конфигурации в файле конфигурации Apache (httpd.conf / apache.conf). В вашем случае вы можете указать значения конфигурации в контексте.

В следующем примере следует установить для upload_max_filesize значение 10M для виртуального хоста example.com.

<VirtualHost *>
    ServerName example.com
    DocumentRoot /path_to_docroot
    php_value upload_max_filesize 10M
    php_admin_flag allow_url_fopen on
</VirtualHost>

Если вы не хотите устанавливать это значение для всего сайта, а для одного конкретного каталога, в котором находится приложение, вы можете указать значения в.

<VirtualHost *>
   ServerName example.com
   DocumentRoot /path_to_docroot
  <Location /testApp/>
     php_value upload_max_filesize 10M
     php_admin_flag allow_url_fopen on
  </Location>
</VirtualHost>

См. Http://php.net/manual/en/configuration.changes.php для более подробного объяснения.

StackKrish
источник
+1 Странно, больше ничего не получалось. Локальный htaccess, php ini файлы, ничего из этого не сработало.
boot13
Спасибо! Может быть, кто-то сталкивался с проблемой, что параметры безопасности мода должны быть перезаписаны. Это работает только на уровне vhost, а не на уровне DIRECTORY или LOCATION. Причина в том, что mod-sec настраивается до чтения каталогов или блоков местоположения.
ora-600
1

Другое предложение - использовать mod-fastcgi или mod-fcgi, которые запускают PHP как отдельный автономный демон. Затем для каждого веб-сайта вы можете определить отдельный файл конфигурации пользователя и php.ini.

Вальтер
источник
1

Еще одна опция - это suPHP, которая позволяет вам определять php.ini для каждого VirtualHost. Это также позволяет вам указать версию PHP для каждого VirtualHost.

Антуан Бенкемун
источник