Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Главная » Web разработка » Настройка PHP на хостинге через файл php.ini

Настройка PHP на хостинге через файл php.ini

PHPЯ, конечно, не супер специалист во всяких делах, которые касаются настройки веб серверов, apache, php и всего прочего, поэтому так до сих пор и не завел себе отдельный сервак для проектов. Тем не менее, иногда в работе попадаются ситуации, когда приходится все же влезать в дебри и нюансы настроек – сегодня будет пост об одной из них. Предыстория достаточно тривиальная: занимался разработкой сайта на typo3 и там для работы с изображениями необходимо установить ImageMagick. Обращаюсь, значит к хостеру, они поставили, а оно почему-то все равно не работает. Потом нахожу запрещенную функцию exec, которая как раз для работы ImageMagick нужна – опять обращаюсь к хостеру. А тут еще сложная процедура общения, где я сначала пишу письмо в админке хостера, на него отвечают на почту клиенту и только потом я могу прочитать послание:)

В общем, кое-как 3 или даже 4 дня я помучался, после чего меня направлили на нужную страницу справки, где я нашел всю необходимую информацию. Как оказалось, я мог указывать для хостинга свои настройки PHP через файл php.ini, что, в принципе, было немного непривычно.

Итак, php.ini – это файл настроек и конфигурации PHP. В нем находится ряд директив, которые определяют различное поведение PHP, ну и, следовательно, сайта. Название файла должно быть именно таким, чтобы интерпретатор смог его найти. В интернете пишут, что он сначала ищет файл настроек php.ini в текущем каталоге, если его нет, то переходит в директорию, указанную в переменной окружения PHPRC, и в последнюю очередь проверят пусть, который задан при компиляции PHP. Как-то так, информация интересная, но больше теоретическая:)

Вернемся к реальным примерам. При работе с разными хостерами можно сказать у меня было несколько вариантов и нюансов настройки PHP.

1. Если в качестве админки используется cPanel, то там находим раздел «Конфигурация PHP», где опубликован перечень параметров PHP для хостинга. Иногда там можно поменять версию PHP, если сервер позволяет работать с 4 и 5 версиями.

настройка php

Возможно, cPanel и предоставляет варианты изменения настроек PHP (кроме версии), но мне пока такое не попадалось. Поэтому чаще всего я прибегал ко второму варианту.

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

3. Некоторые хостеры доверяют своим клиентам настолько, что позволяют использовать свои настройки в php.ini на серверах. Как я понимаю, ряд настроек PHP устанавливается по умолчанию, но местами возникают ситуации, когда для тех или иных систем, скриптов может понадобится дополнительная функциональность – как, например, в моем случае с функцией exec или когда речь идет о wordpress можно вспомнить переменную memory_limit.

На одном из хостеров, с которым работаю, нашел инструкцию как же все-таки можно переопределить некоторые настройки php.ini под свои нужды:

В .htaccess добавляем следующие строки:

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

Далее создаем файл в папе /cgi-bin/php5.fcgi

#!/bin/sh
exec /usr/bin/php -c /home/support/php.ini

Здесь /home/support/php.ini путь к вашему php.ini (конечно сам файл php.ini нужно будет там создать, убедитесь в правильности пути). После этого назначаем файлу php5.fcgi права 755 (chmod 755 php5.fcgi). Теперь обработка настроек PHP будет производится с учетом вашего файла php.ini.

К этой инструкции есть 2 уточнения. При создании файла php5.fcgi нужно использовать unix переводы строк т.е. n. И если возникает 500 ошибка, проверьте лог файл ошибок, где скорее всего найдете в чем проблема.

Кстати, к этому алгоритму один из пользователей добавил комментарий – и очень полезный! Можно все организовать немного проще. Все в том же файле .htaccess добавляем путь к своему php.ini через специальную настройку:

suPHP_ConfigPath /home/accname/php/php.ini

У меня лично работает! Внимание, пусть /home/accname/php/php.ini подставляете свой.

Ну и напоследок 2 настройки php.ini ради которых и пришлось «заморачиваться по полной»:

  • disable_functions — директива позволяет вам запрещать вызовы некоторых функций из соображений безопасности. Список указываем через запятую в виде имен функций.
  • memory_limit — максимальный объем памяти, которая выделяется для выполнения скрипта.

Ну, и чтобы пост получится полноценным на 100% рассказываю как узнать настройки PHP. Для этого создаете на локальном компьютере файл info.php, где пишете код:

<?php 
phpinfo();
?>

Сохраняем и копируем его на FTP хостинга в корневую директорию сайта, после чего запускаем. На экране должны отобразиться все настройки PHP, где и можно найти значение тех или иных функций для исправления в php.ini. Если есть что добавить — пишем в комментариях.

P.S. Постовой. Оптимизация, раскрутка и продвижение сайта в поисковых системах Google, Yandex.
Если вам нужна качественная разработка сайта, то можете обратиться в LTD-студию.

14.04.10

Категории: Web разработка.

Теги: , , , , ,

15 Comments
  1. BOLVERIN

    советую попробовать собрать минисервер на рабочем компе. сварганить что-то типа денвера, но своими руками и без «блекджека и дам» какие присутствуют в денвере. очень много полезного узнаете :)
    очень долго возился когда настраивал создание субдоменов из админки WordPress Mu. Хостеров обычно пихать тут бесполезно — самому надо искать инфу и уже говорить саппорту что делать:) обидно что настроить-настроил, но реализовал в результате все совсем по другому) досих пор работает парачка субдоменов созданая таким образом :)
    удобно, кстати, если делать блогохостинг или соц.сервис.

  2. Mikasi

    У меня была подобная проблема, что и увтора поста, однако ее все же решил хостер. Я просто настоял на том, что якобы не соображаю во всех этих делах, настройках и пр. И они сделали все сами :)

  3. Tod

    BOLVERIN, в следующей версии системы wordpress 3.0 настраивать сеть доменов (ну и, наверное, субдоменов) будет намного удобнее.

  4. BOLVERIN

    2 Tod: в любом случае надо будет настраивать сервак под автоматическое создание доменов.

  5. Максим

    Да с ужасным нетерпением жду WP 3 ну а пока приходится в ручную это делать, это конечно не проблемно когда 3-10 сайтов ставишь в день, а вот если по 20-40 тогда конечно.

  6. Dem

    Эх, неделю назад бы, а то все перерыл, пока решал с реврайтом. Благо, хостер оказался понимающим и рассказал, что да как.

  7. Андрей

    Есть у меня один сайт на Вордовском движке, с восемью сотнями страниц. В админке пытался строить карту сайта, выходила ошибка, что лимит памяти сервера 32Мб. Думал — ну и хрен с ним.

    Прочитав Вашу статью зашел в админку сервера, и увидел, что ограничение памяти установлено 32Мб. Поменял на 128, зашел в админку сайта и запустил построение карты.

    Ву-аля! Карта построилась!

    Александр, благодарю за наводку! Ларчик-то просто открывался :-)

  8. Tod

    Андрей, лучше ставить «оптимальный минимум», говорят, хостер может обидеться в таких случаях.

  9. BOLVERIN

    вообще странно что столько памяти жрет.
    800 страниц: проверка типа чпу, выборка из бд даты и линка. определение типа каждой страницы. сортировка по дате и построение на основе полученых данных карты. ну блин, метров 10 я бы еще понял.
    2 Tod: не разбирал работу построения сайтмапа для вордпресса? а то уж слишком дофига памяти жрет.

  10. Андрей

    1. Александр, у меня на плане хостинга 2Гб оперативки, а используются не более 600 мегов. Поэтому я улеличил лимит. Тут хостером как бы я сам и являюсь (хостинг — взял виртуальный выделенный сервер). Другой вопрос — если сайтов со временем насаздаю столько, что они смогут более 2 Гб оперативки съесть. Тогда вопрос конечно интересный — что будет со всеми хомяками? Или сервер на время орубиться, или просто перезагрузиться. Этого я не знаю. Время покажет.

    2. BOLVERIN, на сайте стоит плагин-переводчик. В его настройке я поставил:

    а) что бы переведенные страницы включались в карту сайта.

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

    Я подозреваю, что страниц таким образом становится более 800, и поэтому 32 мегов и не хватало для построения карты.

  11. BOLVERIN

    2 Андрей: наглядно объясню сколько инфы в 32 мегабайтах.
    если мне не изменяет память, то «война и мир» весит около 2-3 мегабайт. т.е. 32мб это грубоговоря 10 полных сборников «война и мир». это бешенное кол-во информации.

  12. Андрей

    Для текстовой информации 32 мега — это море. Но для сервера, который перелопачивает информацию в базах данных — получается недостаточно.

    Но если кто подскажет, как в 32 мегабайта уместить работу плагинов в Вордпрессе — буду благодарен.

  13. BOLVERIN

    2 Андрей: я не знаю сколько у сервера сжирает памяти исполнение php, но не думаю что много.
    сервер это тоже компьютер, а оперативная память заполняется примерно также как и физическая. вроде отличается скоростью доступа и еще какими-то параметрами, но я к сожален ия не железячник потому в этом вопросе могу и ошибаться.
    DLE почемуто 32 метра вполне хватает для сайтмапа.

  14. Tod

    BOLVERIN, память для скриптов и хранения информации выделяется по разному, при использовании сторонних плагинов также нужно понимать, что не везде код у них оптимизирован и все такое. Короче по разному бывает — в одних хостингах хватает 32Мб для 10-15 плагинов, у других даже с этим числом возникают проблемы.

  15. Николай

    Проще в .htaccess прописать правило для php … например:
    php_value max_input_vars 10000
    вуаля

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

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.