Расположение системных 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

Надеюсь эта инфа поможет Вам сэкономит несколько минут  времени

Хоститесь^^

14 Comments

  • Craq:

    Не могу со всем согласится, но в целом правильно сказано.
    Я тоже копал в этом направлении, и кое какие наработки есть.
    Что я могу сказать, над вышесказанным стоит хорошенько поразмыслить.
    Автор молодец, проделал немаленькую работу, так держать.
    А что остается делать, ведь многие этого просто не понимают.
    Я тоже копал в этом направлении, и кое какие наработки есть.Рекомендуем Вам добавить Craq.ru

  • Огромное спасибо Автору, сэкономил как минимум полчасика.
    А то этих php.ini развелось на серваке, жуть.

  • Dima:

    Здравствуй, всё это хорошо.
    Но у меня при создании в папке клиента файла php.ini данные берутся оттуда.
    И Сипанель забивает на системный php.ini
    Где это редактируется ?

  • Хостинг:

    Вы имеете ввиду cPanel или Apache(php)?
    сама сИпанель не подхватывает php.ini с клиентский папок, тоисть вы не можете увеличить например, upload_max_filesize , для загрузок через Файловый Менеджер, путем создания php.ini в клиентской папке

    А вот с PHP скриптами все иначе, сначала проверяется php.ini расположенное в папке скрипта, а только потом уже сервачное.

  • Хостинг:

    расскажите подробнее что именно у вас происходит

  • Dima:

    Есть серверный php.ini. C заданными max size, time limit, disable procedure и т.д..
    Так вот когда Юзер создаёт у себя в папке сайта php.ini Апач сипанельный не читает системный файл php.ini восве, читает только клиентский php.ini далее вы я думаю понимаете, что может делать юзер. Например в DirectAdmin есть системный и клиентский php.ini оба не доступны клиенту для редактирования. Первым читается системный php.ini затем читается клиентский php.ini тем самым перезаписывая необходимые нам параметры.
    Как заставить Сипанель не читать клиентские php.ini?

  • Dima:

    Ответ с поддержки Сипанели
    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»

  • Dima:

    Если все же потребуется поменять какие либо параметры 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
    перед тем как делать эти действия

  • Хостинг:

    перепроверил — будет работать ;)

  • Dima:

    Если в папке у клиента 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. На выполнение скриптов сипанела это не повлияет.

    Можете попробовать и инклюдом. должно работать и так и так.
    Но если вы хотите объявить это глобально на сервере, то в любом случае нужно редактировать темплейт виртуал хоста апача

Добавить комментарий

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>