Как создать файл php ini
Обновлено: 03.07.2024
Я хочу создать конфигурационный файл для моего проекта PHP, но я не уверен, что лучший способ сделать это.
у меня есть 2 идеи до сих пор.
1-Использовать Переменную
2-Используйте Const
3-Использовать Базу Данных
Я буду использовать конфигурацию в классах, поэтому я не уверен, какой способ будет лучшим или если есть лучший способ.
один простой, но элегантный способ создать config.php файл (или как вы его называете), который просто возвращает массив:
и затем:
Я довольно удивлен принятым здесь ответом и количеством голосов, которые он получил. За исключением ответа Марсио Маццукато, нет никакого обсуждения относительных достоинств / недостатков любого из многочисленных подходов.
варианты, которые я вижу:
механизмы на основе файлов
Они требуют, чтобы ваш код искал в определенных местах, чтобы найти файл ini. Это трудная проблема для решения и тот, который всегда появляется в больших PHP-приложениях. Однако вам, вероятно, придется решить эту проблему, чтобы найти PHP-код, который будет включен / повторно использован во время выполнения.
общие подходы к этому-всегда использовать относительные каталоги или искать из текущего каталога вверх, чтобы найти файл, исключительно названный в базовом каталоге приложения.
общие форматы файлов, используемые для конфигурационных файлов являются PHP код, ini форматированные файлы, JSON, XML, YAML и сериализованные PHP
PHP-кода
Это обеспечивает огромную гибкость для представления различных структур данных, и (предполагая, что он обрабатывается с помощью include или require) анализируемый код будет доступен из кэша кода операции - что дает преимущество в производительности.
The include_path предоставляет средство для абстрагирования потенциальных местоположений файла без использования дополнительного кода.
с другой стороны, одним из основная причина отделения конфигурации от кода заключается в разделении обязанностей. Он предоставляет маршрут для ввода дополнительного кода в среду выполнения.
если конфигурация создается из инструмента, возможно, можно проверить данные в инструменте, но нет стандартной функции для экранирования данных для встраивания в PHP-код, как существует для HTML, url, операторов MySQL, команд оболочки.
сериализованные данные Это относительно эффективно для малых объем конфигурации (до 200 элементов) и позволяет использовать любую структуру данных PHP. Для создания / анализа файла данных требуется очень мало кода (поэтому вы можете вместо этого потратить свои усилия на то, чтобы файл был написан только с соответствующим разрешением).
экранирование содержимого, записанного в файл, обрабатывается автоматически.
поскольку вы можете сериализовать объекты, он создает возможность для вызова кода просто путем чтения файла конфигурации (the __wakeup magic method).
структурированный файл
хранение его в виде INI-файла, как предложено Marcel или JSON или XML, также предоставляет простой api для отображения файла в структуру данных PHP (и, за исключением XML, для экранирования данных и создания файла), устраняя уязвимость вызова кода с помощью сериализованных данных PHP.
Он будет иметь аналогичные характеристики для сериализованных данных.
Ну - это было бы своего рода трудно хранить данные конфигурации базы данных в базе данных - не так ли?
но на самом деле, это довольно сильно самоуверенный вопрос, потому что любой стиль действительно работает, и все это вопрос предпочтения. Лично я бы выбрал переменную конфигурации, а не константы - обычно потому, что мне не нравятся вещи в глобальном пространстве, если это не необходимо. Ни одна из функций в моей кодовой базе не должна иметь возможности легко получить доступ к моей базе данных пароль (кроме моей логики подключения к базе данных) - поэтому я бы использовал его там, а затем, вероятно, уничтожил его.
Edit: чтобы ответить на ваш комментарий-ни один из механизмов разбора не будет самым быстрым (ini, json и т. д.), но они также не являются частями вашего приложения, которые вам действительно нужно сосредоточиться на оптимизации, поскольку разница в скорости будет незначительной для таких небольших файлов.
обычно я в конечном итоге создаю один conn.php-файл, который имеет моего подключения к базе данных. Затем я включаю этот файл во все файлы, которые требуют запросов к базе данных.
Define сделает константу доступной везде в вашем классе без необходимости использовать global, в то время как переменная требует global в классе, я бы использовал DEFINE. но опять же, если параметры БД должны изменяться во время выполнения программы, вы можете придерживаться переменной.
Если вы думаете, что будете использовать более 1 дБ по какой-либо причине, перейдите к переменной, потому что вы сможете изменить один параметр, чтобы переключиться на совершенно другую дБ. Т. е. для тестирования , автоматического резервного копирования и т. д.
Создание и использование собственного файла php.ini (suPHP)
Создание и использование собственного файла php.ini
Внимание!: Данная информация не актуальна для наших серверов, управлять PHP.ini, т.е. настройками PHP и версией PHP, вы можете в CPanel в раздлеле Select PHP version ( Выбор PHP версии )
Любой пользователей может создать собственный файл php.ini и разместить его в папке вызываемого срипта.
Это довольно удобно, так как Вы можете самостоятельно редактировать свои настройки, без обращения в службу тех. поддержки
Если Вы решили положить php.ini где то в public_html, то создайте файл .htaccess в корневой папке сайта ( например /home/user/public_html ,где user ваш никнейм в cpanel) или если файл существует то только добавьте в любом месте (в начале или конце) в файл .htaccess директивы которые описанны ниже.
<Files php.ini>
order allow,deny
deny from all
</Files>
эти директивы запрещают просмотра файла php.ini посторонними.
При такой установке PHP в виде обработчика CGI, SuPHP, Вы не можете использовать в файле .htaccess следующие директивы : php_flag, php_admin_flag, php_value и прочих, которые изменяют какие-либо параметры PHP окружения это вызовет ошибку с кодом 500, Internal Server Error.
Внимание: собственный файл php.ini действителен только в пределах директории, в которой размещён, если не указана специальная опция, см. ниже.
т.е. в пишите эту строку в файл .htaccess перед кодом запрета просмотра файла php.ini, только замените user на свое имя пользователя.
Права доступа на файлы и папки:
644 - запись в файл разрешена (по умолчанию)
444 - запись в файл запрещена (только чтение и исполнение)
755 - права доступа на папки (по умолчанию, менять не требуется)
Обратите внимание - при правах доступа 644 запись разрешена только для скриптов которые запускаются в среде Вашего аккаунта. Никто другой запись произвести не сможет. Для ещё большего увлечения безопасности Вы можете сменить права доступа у файлов на 444 - в этом случае даже Ваши скрипты не смогут ничего записать в файлы, но это не обязательно.
Таким образом при установке скриптов не требуется менять права доступа, даже если в инструкции к скрипту написано что их нужно изменить. Просто пропускайте пункт смены прав доступа CHMOD.
Пример файла php.ini и описание некоторых его параметров:
; Синтаксис файла: "директива = значение"
; Знак комментария в php.ini - ";" (точка с запятой). Все, что находится в строке после ";" не воспринимается PHP
disable_functions = ; В целях безопасности, позволяет запретить выполнение указаных функций
max_execution_time = 30 ; Максимальное кол-во секунд исполнения скрипта
memory_limit = 16M ; Максимум оперативной памяти, которую может взять себе скрипт
E_NOTICE ; Показывать все ошибки, кроме замечаний
display_errors = On ; Вывод ошибок в браузер. Для облегчения отладки сценариев
variables_order = "EGPCS" ; Порядок, в котором PHP будет регистрировать перменные (E - встроенные переменные, G - GET переменные, P - POST переменные, C - Cookies, S - сессии). Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными
register_globals = On ; Возможность обращения к переменным, поступающим через GET/POST/Cookie/сессии, как к обычным переменным (например, "$переменная")
post_max_size = 55M ; Максимальный объём данных который может быть принят
magic_quotes_gpc = On ; Включение автоматической обработки кавычек, поступающих через POST/GET/Cookie
file_uploads = On ; Разрешает загрузку файлов
;upload_tmp_dir = ; Каталог для временных закачанных файлов (не забудте создать этот каталог!)
upload_max_filesize = 5M ; Максимальный размер закачиваемого файла
session.save_handler = files ; Хранить данные сессий в файлах
session.save_path = /tmp ; Папка для хранения файлов сессий (не забудте создать этот каталог!)
session.name = PHPSESSID ; Исользовать в качестве имени сессии и сессионной cookie ID сессии
session.auto_start = 0 ; Запрет на инициализацию сессии при начале соединения
session.cookie_lifetime = 0 ; Время жизни сессионных cookie ("0" - до закрытия окна браузера)
; и много других параметров .
Внимание!: Данная информация не актуальна для наших серверов, управлять PHP.ini, т.е. настройками PHP и версией PHP, вы можете в CPanel в раздлеле Select PHP version ( Выбор PHP версии )
Связанные статьи
При установки какого либо движка (CMS), потребуется указать хост (host) к подключению базы.
Когда вы зашли по FTP или открыли Диспетчер файлов в CPanel, то директория для загрузки вашего.
Всем известно что когда вы копируете много мелких файлов на FTP, или на своем компьютере, с.
При установке скрипта Shop-Script PREMIUM выдает следующую ошибку:You have an error in your SQL.
Для этого существует специальная функция phpinfo(). Создайте в директории
Школа хостинга Редактор: Марина Долгова 117855 5 мин АудиоГде находится php.ini?
Местонахождение файла php.ini зависит от операционной системы, на которой работает сервер хостинг-провайдера. Чтобы узнать где он находится выполняем 4 простых шага:
-
Создаем php-файл (имя может быть любое, но мы берем для примера myphpinfo.php), и добавляем в него следующие строки:
Как настроить php.ini?
Файл php.ini имеет такие правила синтаксиса "директива = значение". Если вы хотите добавлять комментарии (например, в которых указываете на что влияет данная настройка), то делайте после точки с запятой (все, что идет после этого знака не учитывается как команда). Вот пример:
max_execution_time = 40 ; Максимальное кол-во секунд исполнения скрипта
Далее рассматриваем основные настройки, которые можно сделать в файле php.ini:
Общие настройки
PHPengine = On ; Работа PHP-скриптов включена.
short_open_tag = On ; Разрешает упрощенно обрамлять PHP-код тагами <?. Если будет значение Off, то PHP-код обрамлять в традиционные <?php.
asp_tags = On ; Включает возможность выделять PHP-код, как это делается в ASP - <% %>
Precision = 12 ; Указывает сколько цифр будет после запятой, у чисел с плавающей точкой.
output_buffering = 4096 ; Автоматически будет включена буферизация вывода, с размером буфера указанным после "равно".
safe_mode = On ; Безопасный режим.
safe_mode_allowed_env_vars = PHP_ ; Разрешает пользователю работать только с переменными окружения, которые начинаются с PHP_. Если эта директива будет пустой (не будет иметь значения), то пользователи смогут изменять любые переменные окружения. Это может очень плохо сказаться на защите сценариев.
safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Запрещает изменять переменные, которые перечисляются через запятую.
disable_functions = ; После знака "равно" нужно через запятую записать функции, которые вы хотите отключить (обычно это делается для безопасности)
disable_classes = ; После знака "равно" нужно через запятую записать классы, вызов которых вы хотите запретить (обычно это делается для безопасности)
Ограничение ресурсов
max_execution_time = 40 ; Максимальное время на выполнение скрипта (в секундах)
max_input_time = 40 ; Максимальное время в секундах, которое дается скрипту может на обработку данных, которые загружаются.
memory_limit = 16M ; Максимум памяти, которые выделяется для работы одного скрипта
Обработка ошибок и журналы
error_reporting = E_ALL | E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE ; Указывает перечень ошибок, которые можно выводить.
display_errors = On; Разрешает выводить ошибки прямо в браузер (часто используют для удобства отладки).
display_startup_errors = On ; Ошибки появляющиеся при страрте PHP разрешено показывать.
log_errors = On ; Ошибки разрешено записывать в файл журнала.
log_errors_max_len = 1024 ; Максимальное число символов, которое может составлять длинна журнала.
error_log = filename ; Задается имя журнала ошибок.
Обработка данных
variables_order = "EGPCS" ; Устанавливает порядок, в котором PHP будет регистрировать перменные (E - встроенные переменные, G - GET переменные, P - POST переменные, C - Cookies, S - сессии). Если убрать любую из букв, то работа соответствующих переменных будет блокироваться.
register_globals = On ; Включает возможность для обращения к переменным, которые поступают через GET/POST/Cookie/сессии, как к обычным переменным (например "$имяпеременной").
register_argc_argv = On ; Разрешено создавать переменные $argv и $argc на основе информации из GET-метода.
post_max_size = 8M ; Устанавливает максимальный объём данных, который может быть принят.
magic_quotes_gpc = On ; Включает автоматическую обработку кавычек, которые поступают через POST/GET/Cookie.
auto_prepend_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ДО выполнения сценария
auto_append_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ПОСЛЕ выполнения сценария.
default_mimetype = "text/html" ; Задает кодировку для Content-type. По умолчанию будет использовано text/html без указания кодировки
doc_root = ; Задается корневая папка для PHP-сценариев.
extension_dir = "./" ; Задается папка, в которой будут хранится динамически загружаемые расширения.
Загрузка файлов
file_uploads = On ; Загрузка файлов на сервер разрешена.
upload_tmp_dir = ; Временная директория для файлов, которые загружаются.
upload_max_filesize = 2M ; Устанавливает максимальный размер файла, который можно загрузить.
Работа с сокетами
user_agent="PHP" ; Задается переменная USER_AGENT, когда происходит подключение через сокет.
default_socket_timeout = 30 ; Максимальное время на прослушивание сокета (секунды).
Сессии
session.save_handler = files ; Уазывает, что информацию о сессиях нужно хранить в файлах
session.save_path = /tmp ; После знака "равно" нужно указать путь к папке в которой будет храниться информация о сессиях (важно чтобы она папка уже существовала)
session.name = PHPSESSID ; Указывает на исользование в качестве имени сессии и сессионной cookie - ID сессии
session.auto_start = 0 ; Запрещает инициализировать сессии при начале соединения
session.cookie_lifetime = 0 ; Время жизни сессии ("0" - значит, что сессия живет, пока окно браузера не будет закрыто)
Динамические расширения
extension=modulename.extension ; Можно использовать чтобы загружать внешние модули. Для Windows-систем, обычно пишут - extension=msql.dll, а для
UNIX - extension=msql.so
Работа с модулями MySQL
mysql.allow_persistent = On ; Разрешает устойчивые MySQL-соединения.
mysql.max_persistent = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений. Если указать -1, то это будет значить, что ограничений нет.
mysql.max_links = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений, и неустойчивых ODBC-соединений. Если указать -1, то это будет значить, что ограничений нет.
mysql.default_port = ; Порт для функции mysql_connect.
mysql.default_socket = ; Имя сокета для локальных соединений MySQL.
mysql.default_host = ; Имя хоста для функции mysql_connect.
mysql.default_user = ; Имя пользователя.
Если вы создали собственный файл php.ini и поместили его в папке сайта
В таком случае, в целях безопасности нужно заблокировать доступ к нему для всех, кроме вас. Для этого необходимо в файле .htaccess прописать такой код:
Но будьте внимательны, т.к. при данных настройках, все директивы (php_value, php_flag и т.д.) касающиеся настроек php через файл .htaccess перестанут работать (будет выдаваться ошибка 500 Internal Server Error).
Важно! Если вы создаете собственный файл php.ini, то он будет действовать только на директорию в которой он находится.
Облачный хостинг
Обзоры и рейтинг лучших регистраторов доменных имен
Провайдеры с бесплатным тестовым периодом
Задайте его экспертам! Ответ приходит очень быстро и прямо на ваш email.
От панели управления зависит ваше удобство в настройке хостинге\сайта.
Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.
Облачный хостинг - распределение нагрузки на несколько серверов, если сервер с вашим сайтом перегружен или не работает. Это гарантия того что пользователи в любом случае смогут видеть ваш сайт. Но это дорогая, более сложная опция, которую предоставляют далеко не все провайдеры.
Виртуальный хостинг - подходит для большинства проектов начального уровня с посещаемостью до 1000 человек в сутки. В таком хостинге мощность сервера делится между несколькими хостинговыми аккаунтами. Услуга проста в настройке даже для новичков.
VPS - подходит для более сложных проектов с достаточно большой нагрузкой и посещаемостью до 10000 человек в сутки. Здесь мощность сервера фиксированная для каждого виртуального сервера, при этом сложность настройки увеличивается.
Выделенный сервер - нужен для очень сложных и ресурсоемких проектов. Для вас выделяют отдельный сервер,мощность которого будете использовать только вы. Дорого и сложно настраивать.
Размещение и обслуживание вашего собственного сервера в дата-центре хостинга - это не очень популярная услуга и требуется в исключительных случаях.
- Облачный хостинг
- Виртуальный хостинг
- VPS/VDS
- Выделенный сервер
- Размещение сервера
- CDN
CMS - это система управления контентом сайта. Хостеры стараются для каждой из них делать отдельный тариф или упрощать установку. Но в целом это больше маркетинговые ходы, т.к. у большинства популярных CMS нет специальных требований к хостингу, а те что есть - поддерживаются на большинстве серверов.
Виртуализация - это создание виртуальной среды на физическом сервере, позволяющая запускать требуемые ПО без затрагивания процессов, совершаемых другими пользователями сервера. С её помощью ресурсы физического сервера распределяются между виртуальными (VPS/VDS). Основные виды: аппаратная (KVM), паравиртуализация, виртулизация на уровне ОС (OpenVZ).
Абузоустойчивый хостинг - компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).
Безлимитный хостинг - хостинг у которого отсутствуют лимиты на количество сайтов, БД и почтовых ящиков, трафик, дисковое пространство и т.д. Обычно это больше маркетинговый трюк, но можно найти что-то интересное для себя.
Безопасный хостинг - тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их "лечить".
Защита от DDOS - компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.
- Абузоустойчивый хостинг
- Безлимитный хостинг
- Безопасный хостинг
- Черный список
- Защита от DDOS
- Конструктор сайтов
- Партнерские программы
- Реселлинг хостинга
Тестовый период - предоставляется хостером бесплатно на 7-30 дней, чтобы вы могли удостовериться в его качестве.
Moneyback - период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.
Настоятельно рекомендуем не покупать слишком дешевый хостинг! Как правило с ним очень много проблем: сервер иногда не работает, оборудование старое, поддержка долго отвечает или не может решить проблему, сайт хостера глючит, ошибки в регистрации, оплате и т.д.
Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.
- Дешёвый хостинг
- Дешевый VPS-хостинг
- Цена-Качество
- Дорогой хостинг
- Бесплатный хостинг
- VPS/VDS посуточно
На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.
ОС - операционная система, установленная на сервере хостинга. Мы рекомендуем размещать на серверах с Linux, если нет особых требований у разработчиков сайта.
Файл конфигурации ( php.ini ) считывается при запуске PHP. Для версий серверных модулей PHP это происходит только один раз при запуске веб-сервера. Для CGI и CLI версий это происходит при каждом вызове.
- По месту расположения модуля SAPI ( PHPIniDir директива Apache 2, -c параметр командной строки CGI и CLI)
- Переменная среды PHPRC .
- Местоположение файла php.ini может быть указано для различных версий PHP. Корневой ключ реестра зависит от разрядности операционной системы и установки PHP. Для 32-разрядного PHP на 32-разрядной Windows или 64-разрядного PHP и 64-разрядной Windows используйте [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] . Для 32-разрядного PHP на 64-разрядной Windows [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] . Следующие ключи реестра исследуются при поиске для установок с совпадающей разрядностью: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x] , где x, y и z подразумевают major, minor и release версии PHP. Для 32-разрядного PHP на 64-разрядной Windows ключи реестра будут другими: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z] , [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x] . Если также имеется значение IniFilePath в любом из этих ключей, то местонахождение php.ini будет определено первым ключом по порядку (только для Windows).
- [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] или [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP] , значение IniFilePath (только для Windows).
- Текущая директория (исключая CLI).
- Директория веб-сервера (для модулей SAPI) или директория PHP (иначе в Windows).
- В директории Windows ( C:\windows или C:\winnt ) (для Windows) или --with-config-file-path с выбором при компиляции.
Если файл php-SAPI.ini существует (где SAPI - это тип интерфейса, который используется, например, php-cli.ini или php-apache.ini ), то он используется вместо php.ini . Тип интерфейса между веб-сервером и PHP может быть определён с помощью функции php_sapi_name() .
Замечание:
Веб-сервер Apache изменяет текущую директорию на корневую при запуске, в результате чего PHP считывает php.ini из корневой файловой системы, если файл существует.
В php.ini можно использовать переменные окружения, как показано ниже.
Директивы php.ini , обрабатываемые модулями, описаны на соответствующих страницах модулей. Список директив ядра имеется в приложении. Не все директивы PHP документированы в этом руководстве: для ознакомления с полным списком директив доступных в вашей версии PHP, прочитайте комментарии вашего php.ini . Кроме того, вы можете найти полезной » последнюю версию php.ini из Git.
Возможно обращаться к существующим ini-переменным из ini-файлов. Пример: open_basedir = $ ":/new/dir" .
Сканирование директорий
Существует возможность сконфигурировать PHP для сканирования директорий в поисках .ini-файлов после считывания php.ini . Это можно сделать на моменте компиляции, указав опцию --with-config-file-scan-dir. Сканирование директорий может быть переопределено во время исполнения установкой переменной среды PHP_INI_SCAN_DIR .
Можно сканировать несколько директорий, разделяя их разделителем, используемом в вашей операционной системе ( ; в Windows, NetWare и RISC OS; : на всех остальных платформах; в PHP есть константа PATH_SEPARATOR , которую можно использовать) Если PHP_INI_SCAN_DIR пуста, то PHP также будет сканировать директорию, заданную на этапе компиляции с помощью --with-config-file-scan-dir.
В каждой директории PHP сканирует все файлы заканчивающиеся на .ini в алфавитном порядке. Список всех загруженных файлов в том порядке, в котором они были загружены, доступен с помощью функции php_ini_scanned_files() , либо при запуске PHP с опцией --ini.
Я, конечно, не супер специалист во всяких делах, которые касаются настройки веб серверов, 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 версиями.
Возможно, 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
Здесь /home/support/php.ini путь к вашему php.ini (конечно сам файл php.ini нужно будет там создать, убедитесь в правильности пути). После этого назначаем файлу php5.fcgi права 755 (chmod 755 php5.fcgi). Теперь обработка настроек PHP будет производится с учетом вашего файла php.ini.
К этой инструкции есть 2 уточнения. При создании файла php5.fcgi нужно использовать unix переводы строк т.е. n. И если возникает 500 ошибка, проверьте лог файл ошибок, где скорее всего найдете в чем проблема.
Читайте также: