Пользовательский Php.ini Когда php запускается как модуль?

У меня есть настройки PHP, которые могут быть изменены только в INI-файл. Я не могу изменить этот параметр в глобальном php.ini из-за конфликтов, поэтому мне нужно, чтобы этот пользователь был конкретным. Можно ли это сделать, если php запускается как модуль? Или я должен изменить PHP запустить как CGI?

Похоже, лучший ответ - "не совсем", но вы можете незаметно изменить некоторые параметры, используя приведенные ниже приемы.

5 ответов

Решение

Я не знаю ни одного способа указать отдельный php.ini при использовании PHP в качестве модуля Apache, только при использовании PHP в качестве CGI. Тем не менее, любой из параметров конфигурации в php.ini может быть изменен в .htaccess файл, как показано на http://php.net/configuration.changes при условии, что для AllowOverride установлено в конфигурации Apache значение Options или же All,

Я делал это на многих своих сайтах, чтобы изменить общие конфигурации PHP. Я бы предположил, что вам не нужно менять каждую настройку, поэтому с номером можно легко управлять, добавив параметры в ваш .htaccess файл в каталоге, в который нужно внести изменения.

Ниже я использую пару сайтов, чтобы изменить include_path а также установить auto_prepend_file а также auto_append_file Настройки. Для элементов логического флага просто используйте php_flag вместо php_value,

<IfModule mod_php5.c>
    php_value auto_prepend_file 'header.inc.php'
    php_value auto_append_file 'footer.inc.php'
    php_value include_path '/path/to/private/includes:/usr/share/pear'
</IfModule>

Я переопределил обработчик для php для оболочки php cgi и смог указать файл php.ini

Для этого: создайте файл htaccess в папке, которую вы хотите изменить, примерно так:

Action php5-cgi /cgi-bin/php5-cgi.cgi
AddHandler php5-cgi .php

Затем создайте файл 'php5-cgi.cgi' с чем-то вроде этого:

#!/bin/sh
exec /usr/bin/php-cgi "$@" -c "/home/user/php.ini"

Установите разрешения для этого файла для выполнения в качестве "пользователя". Затем запустите тестовый файл с помощью phpinfo(1); чтобы увидеть, загружен ли у вас INI-файл.

Спасибо за помощь всем!

Вы можете использовать Apache "php_admin_value" для каждого vhost/ пользователя.

IIRC, вы можете переопределить каждое значение php.ini с помощью этой команды

В основном нет.

Из руководства по PHP:

Файл конфигурации (php.ini) читается при запуске PHP. Для версий PHP серверного модуля это происходит только один раз при запуске веб-сервера. Для версий CGI и CLI это происходит при каждом вызове.

Все подробности здесь: http://php.net/configuration.changes

Другие вопросы по тегам