Расположение системных php.ini в cPanel

Как-то на днях, нужно было увеличить upload_max_filesize для phpmyadmin’a на cPanel сервере. Выполняя эту простую задачу, я начал менять ПХП переменные в php.ini самого cPanel’a забыв что phpmyadmin имеет собственное php.ini.
cPanel сама по себе очень грамотно выполнена, пхп настройки отдельных надстроек cPanel’а не пересекаются и могут быть измененными отдельно друг от друга. Решил выложить расположение системных, и не только php.ini файлов на cPanel сервере
Итак php.ini самого cPanel’a:
/usr/local/cpane/3rdparty/etc/php.ini
Часть ПХП переменных cPanel’a можно изменить через веб интерфейс WHM >> Tweak Settings
Идем дальше, php.ini для phpmyadmin:
/usr/local/cpane/3rdparty/etc/phpmyadmin/php.ini
Естественно где-то неподалеку лежит php.ini для phppgadmin:
/usr/local/cpane/3rdparty/etc/phppgadmin/php.ini
Для веб-майлов Horde и RoundCube php.ini находятся по следующим путям соответственно:
/usr/local/cpane/3rdparty/etc/horde/php.ini
/usr/local/cpane/3rdparty/etc/roundcube/php.ini
Надеюсь эта инфа поможет Вам сэкономит несколько минут времени
Хоститесь^^
Не могу со всем согласится, но в целом правильно сказано.
Я тоже копал в этом направлении, и кое какие наработки есть.
Что я могу сказать, над вышесказанным стоит хорошенько поразмыслить.
Автор молодец, проделал немаленькую работу, так держать.
А что остается делать, ведь многие этого просто не понимают.
Я тоже копал в этом направлении, и кое какие наработки есть.Рекомендуем Вам добавить Craq.ru
Огромное спасибо Автору, сэкономил как минимум полчасика.
А то этих php.ini развелось на серваке, жуть.
Здравствуй, всё это хорошо.
Но у меня при создании в папке клиента файла php.ini данные берутся оттуда.
И Сипанель забивает на системный php.ini
Где это редактируется ?
Вы имеете ввиду cPanel или Apache(php)?
сама сИпанель не подхватывает php.ini с клиентский папок, тоисть вы не можете увеличить например, upload_max_filesize , для загрузок через Файловый Менеджер, путем создания php.ini в клиентской папке
А вот с PHP скриптами все иначе, сначала проверяется php.ini расположенное в папке скрипта, а только потом уже сервачное.
расскажите подробнее что именно у вас происходит
Есть серверный php.ini. C заданными max size, time limit, disable procedure и т.д..
Так вот когда Юзер создаёт у себя в папке сайта php.ini Апач сипанельный не читает системный файл php.ini восве, читает только клиентский php.ini далее вы я думаю понимаете, что может делать юзер. Например в DirectAdmin есть системный и клиентский php.ini оба не доступны клиенту для редактирования. Первым читается системный php.ini затем читается клиентский php.ini тем самым перезаписывая необходимые нам параметры.
Как заставить Сипанель не читать клиентские php.ini?
Ответ с поддержки Сипанели
You can force all users to use a single php.ini file. This is done by setting the phprc_paths in /opt/suphp/etc/suphp.conf. If you set this it will
override any other settings in .htaccess files or httpd.conf.
You can also control which php.ini is used for each account using suPHP_ConfigPath. This directive can be used in httpd.conf and in .htaccess files, so
if you want to lock a particular account to a certain php.ini you’d need to set suPHP_ConfigPath for that account in an include file and remove Options
from the AllowOverride list for that VirtualHost.
Поддержка сипанели абсолютно права.
- если вы хотите глобально запретить использовать юзерам свои php.ini
открываем
/opt/suphp/etc/suphp.conf
там есть вот такая штука
==================
[phprc_paths]
;Uncommenting these will force all requests to that handler to use the php.ini
;in the specified directory regardless of suPHP_ConfigPath settings.
;application/x-httpd-php=/usr/local/lib/
;application/x-httpd-php4=/usr/local/php4/lib/
;application/x-httpd-php5=/usr/local/lib/
==================
Убираете значок комента «;» возле последних 3-ох строчек, и локальные php.ini не будут читаться вообще.
- В случае с отдельным юзером, нужно дописать в httpd.conf
( /usr/local/apache/conf/httpd.conf ) в виртуал хост юрера
suPHP_ConfigPath /usr/local/lib/
в этом случае его php.ini тоже не будут учитываться. А будет использоваться php.ini с /usr/local/lib/
Также можно указать путь к php.ini через .htaccess
SetEnv PHPRC /path/to/users/folder
Но если в конфиге апача указано suPHP_ConfigPath, то PHPRC с .htaccess ‘a не будет работать
- При наличии php.ini в папке клиента (если оно читается ) то сервер читает оттуда только дублированные переменные, тоисть будут учитываться настройки указаны пользователем, а все что не прописано у него берется из серверного /usr/local/lib/php.ini
также замечено что при использовании пользователем своего php.ini, слетают некоторые php extension и zend_extension
приходится явно прописывать их в клиентский php.ini
zend_extension=»/usr/local/IonCube/ioncube_loader_lin_5.2.so
extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=»uploadprogress.so»
extension=pdo_mysql.so
zend_extension=»/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so»
Если все же потребуется поменять какие либо параметры php.ini для определённого клиента.
Создать клиентский php.ini где-нибудь так что бы клиент не имел к нему доступа, как что и где настраивать в этой ситуации??
Ну как вариант, вы можете сделать так:
- Глобально запрещать использовать php.ini, не вижу смысла. Потому что просто задолбетесь включать/выключать им register_globals и прочее
- Редактируете темплейт виртуал хоста, и дописываете туда
suPHP_ConfigPath /usr/local/lib/
Например после «DocumentRoot [% vhost.documentroot %]»
- Пересобираем конфиг апача
/scripts/rebuildhttpdconf
Таким образом, по умолчанию, все клиенты не смогут использовать свои php.ini , но если кому-то нужно позволить, то изменяем путь в suPHP_ConfigPath на папку в его аккаунте, для его виртуал хоста. Ну и допустим ставим права root.root и 644 чтобы никто кроме вас не смог модифицировать этот php.ini
Должно сработать
Убедитесь что вы сделали бекап файлов
/var/cpanel/templates/apache2/vhost.default
и
/usr/local/apache/conf/httpd.conf
перед тем как делать эти действия
перепроверил — будет работать
Если в папке у клиента php.ini с флагом будет лежать. То при удалении клиентом домена в аккаунте Сможет система корректно отработать ?
Может лучше юзать то что написано в /usr/local/apache/conf/httpd.conf
# DO NOT EDIT. AUTOMATICALLY GENERATED. IF YOU NEED TO MAKE A CHANGE PLEASE USE THE INCLUDE FILES.
# Include «/usr/local/apache/conf/userdata/std/2/loginname/domainname/*.conf»
система отработает корректно, php.ini в папке юзвера влияет только на обработку php. На выполнение скриптов сипанела это не повлияет.
Можете попробовать и инклюдом. должно работать и так и так.
Но если вы хотите объявить это глобально на сервере, то в любом случае нужно редактировать темплейт виртуал хоста апача