# Язык программирования PHP

PHP — самый распространённый язык программирования для веб-приложений, на котором написано большинство CMS, блоговых движков и других скриптов. При подключении услуги Поддержка PHP на хостинге можно будет использовать скрипты, написанные на этом языке.

# Особенности работы PHP на Джино

В работе PHP на Джино есть ряд особенностей:

  • Для установки доступны несколько версий PHP от старых до самых последних и стабильных. Но так как устаревшие версии PHP не поддерживаются разработчиками и могут иметь проблемы с безопасностью, мы рекомендуем использовать последнюю из доступных версий.

  • Для каждого подключённого к хостингу домена можно установить отдельную версию PHP. Переключение между версиями происходит в разделе УправлениеНастройки веб-сервера.

  • PHP-скрипты исполняются от имени владельца аккаунта, а не от имени веб-сервера. Чтобы PHP смог что-то записать в папку, достаточно будет стандартных прав 0755.

  • Режим safe_mode выключен.

  • Поддержка cURL, файлов .htaccess и mod_rewrite включена.

  • Путь к интерпретатору PHP: /usr/bin/phpX.Y (CLI), /usr/bin/phpX.Y-cgi (CGI). Здесь X.Y — номер версии PHP, например, 7.2.

  • PHP на Джино работает и как модуль сервера Apache, и через CGI. Для этого нужно подключить Поддержку скриптовых языков. Если ваш аккаунт создан до 25.10.2021 г., то вам нужно будет подключить Поддержку Python+Django и Поддержку mod_perl + Catalyst.

  • Для работы скриптов выделяется 128 МБ оперативной памяти, для премиум-аккаунта — 256 МБ.

  • На Джино установлен модуль IonCube.

  • Можно использовать функции IMAP.

  • По умолчанию PHP-скриптом считается файл с расширением .php или .phtml. Чтобы включить обработку PHP-кода в файлах с расширением .html или .htm, нужно добавить в файл .htaccess следующую директиву: AddType application/x-httpd-php .html .htm .

Если в нужной папке нет файла .htaccess, создайте его. Действие директив этого файла распространяется на все вложенные папки.

Все подключаемые модули и расширения текущей версии PHP, доступные для установки на Джино, представлены в разделе меню УправлениеНастройки веб-сервераНастройки PHP.

Чтобы узнать текущие установки PHP на хостинге, нужно написать PHP-скрипт и обратиться к нему из браузера.

Создайте текстовый файл php.info со следующим содержимым:

<?php phpinfo(); ?>

Теперь поместите этот файл в папку ~/domains/ваш_домен и зайдите в браузере по адресу ваш_домен/php.info.

# Запуск PHP в режиме CGI

Запуск PHP в режиме CGI позволяет указывать свой php.ini, работать из PHP с любыми файлами на аккаунте и иметь полный доступ к файлам, созданным из PHP.

Чтобы запустить PHP в режиме CGI, необходимо:

  1. Подключить Поддержку скриптовых языков (Поддержку PHP можно отключить).

  2. Создать файл php.cgi со следующим содержанием:

    #!/bin/bash
    /usr/local/bin/php-cgi -n
    

    Также содержание файла может быть таким:

    #!/bin/bash
    /usr/local/bin/php-cgi -c /путь/к/файлу/php.ini
    
  3. Закачать файл на сервер в ASCII-режиме в папку домена, на котором предполагается запускать PHP в режиме CGI.

    Например, для домена test.ru это будет папка /domains/test.ru. Если закачать файл не в ASCII-режиме, скрипт работать не будет, появится ошибка 500 (Internal Server Error).

  4. Установить на файл php.cgi права 0755 (rwxr-xr-x) — это можно сделать в файловом менеджере, щёлкнув правой кнопкой мыши на нужном файле.

  5. Проверить права на папку домена. Должны быть установлены права 0755 (drwxr-xr-x).

    Внутри папки с правами 0777 (drwxrwxrwx) скрипт работать не будет, появится ошибка 500 (Internal Server Error).

  6. Создать файл .htaccess в директории домена, на котором PHP будет работать в режиме CGI, и поместить в него следующие директивы:

    Action php-cgi /php.cgi
    AddHandler php-cgi .php
    

Теперь файлы с расширением .php будут обрабатываться PHP интерпретатором в CGI-режиме.

Недостатки такого способа: низкая скорость работы, недоступность некоторых функций модуля и потенциальная небезопасность. Если ваш скрипт взломают, это может иметь более серьезные последствия, чем если бы PHP работал как модуль Apache.
Мы не рекомендуем запускать PHP через CGI.

# php.ini

В конфигурационном файле php.ini находится большинство настроек PHP.

На сайте php.net (opens new window) приведён список директив php.ini, которые вы можете использовать в файле .htaccess.

Примечение

Использовать можно только те директивы, которые обозначены параметрами PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL. Некоторые из директив категории PHP_INI_SYSTEM можно изменить в разделе УправлениеНастройки веб-сервера.

Рассмотрим пример. Если вам необходимо включить функцию magic_quotes_gpc, то пропишите директиву функции в файле .htaccess, в папке сайта или скрипта:

php_flag magic_quotes_gpc on

Для отключения буферизации вывода данных:

php_flag output_buffering off

Для отключения глобальных переменных:

php_flag register_globals off

Все приведённые выше параметры прописаны через директиву php_flag, поскольку они могут принимать только бинарные значения — on/off (1/0). Если значение прописываемого параметра может быть отлично от нуля или единицы (т. е. от on или off), то следует использовать директиву php_value.

Рассмотрим пример.
Чтобы увеличить объём загружаемого файла через скрипты, создайте файл .htaccess в папке скрипта или папке домена и поместите в него следующие директивы (вместо 15 укажите нужный размер):

php_value upload_max_filesize 15M
php_value post_max_size 15M

На Джино PHP работает как модуль Apache, поэтому нельзя использовать пользовательский php.ini. Для использования собственного php.ini вы можете запустить PHP в режиме CGI.

Большую часть настроек можно изменить, не запуская PHP в режиме CGI. Используйте для этого файл .htaccess. Заходить нужно в раздел УправлениеНастройки веб-сервераНастройки PHP.

# allow_call_time_pass_reference

Некоторые CMS требуют включить параметр php.ini allow_call_time_pass_reference. Для этого создайте в нужной папке (например, в папке, куда устанавливаете скрипт) файл .htaccess и поместите в него такую директиву:

php_flag allow_call_time_pass_reference on

Если файл .htaccess в нужной папке уже существует, то просто добавьте эту строку в конец. Действие этой директивы распространяется и на все подпапки.

# register_globals

Некоторые скрипты требуют включения директивы register_globals. Для этого в папке скрипта или в папке домена создайте файл .htaccess и поместите в него следующую директиву:

php_flag register_globals on

Если файл .htaccess в нужной папке уже существует, то просто добавьте эту строку в конец. Действие этой директивы распространяется и на все подпапки.

# Вопросы и ответы

Как изменить часовой пояс на сайте?

Добавьте в файл .htaccess строку с указанием нужного часового пояса (например, московского):

php_value date.timezone 'Europe/Moscow'

Список поддерживаемых временных зон можно узнать на сайте php.net (opens new window).

Почему вместо результатов работы PHP-скрипта я вижу лишь пустую белую страницу?

Скорее всего, в процессе работы скрипта произошла ошибка, а в файле .htaccess отключен вывод ошибок на экран. Отредактируйте этот файл — обычно он находится в вашей домашней директории, папке домена или папке с вашим скриптом. Добавьте в него строку:

php_flag display_errors on

Если такая строка уже есть, приведите её к указанному выше виду.

После завершения отладки скрипта настоятельно рекомендуем снова выключить отображение ошибок.

Почему вместо результатов работы PHP-скрипта скачивается файл *index.php*?

Это значит, что у вас не подключена услуга Поддержка PHP, и обработка PHP-скриптов на вашем аккаунте не работает. Подключить услугу можно в разделе Услуги.

Как выключить отображение ошибок PHP?

На серверах хостинга Джино по умолчанию включён вывод ошибок в PHP-скриптах в браузер. Чтобы его отключить, создайте в своей домашней директории, в папке домена или папке со скриптом файл .htaccess и добавьте в него следующую строку:

php_flag display_errors off

После завершения отладки скрипта рекомендуем выключать отображение ошибок.