Як встановити файли 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

Це, здається, не працює для мене. Чи є якась директива, яку потрібно встановити в головному php.ini, щоб дозволити це?
Brent

1
"AllowOverride Options" або "AllowOverride All" слід встановити в конфігурації APache, щоб це працювало.
StackKrish

Чи apache.confзамінювали б , наприклад, значення у вашому php.iniфайлі чи навпаки?
puk

7

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

Наступний приклад повинен встановити upload_max_filesize в 10М для віртуального хоста 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 для отримання додаткових пояснень.


+1 Дивно, нічого іншого не працювало. Локальний htaccess, php ini файли, нічого з цього не працювало.
boot13

Дякую! Можливо, хтось стикається з проблемою того, що параметри безпеки мод потрібно перезаписати. Це працює лише на рівні vhost, не на рівні ДИРЕКТОРІЯ або МІСЦЕВОСТІ. Причина полягає в тому, що мод-сек налаштовується перед тим, як читати каталоги або блоки локації.
ora-600

1

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


1

Ще один варіант - suPHP, який дозволяє визначити php.ini для кожної VirtualHost. Це також дозволяє вказати версію PHP для кожного VirtualHost.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.