PHP: использование программ на языке PHP
Пользователям хостинга предоставляется возможность использовать на своих сайтах программы на языке PHP (в соответствии с ). У нас установлена одна из последних версий PHP и мы стараемся по мере возможности ее обновлять. Текущую конфигурацию можно посмотреть при помощи функции phpinfo().
Пример скрипта для просмотра конфигурации PHP:
что такое PHP и как начать с ним работать
- очень простой даже для начинающего веб-программиста язык, который, тем не менее, обладает очень серьезными возможностями. PHP - язык достаточно высокого уровня, что позволяет просто реализовывать на нем именно веб-проекты, не заботясь при этом о ненужных низкоуровневых процессах. Если вы хотите добавить динамику и интерактив на свой сайт, но при этом не хотите изучать более сложные языки вроде Perl, можно использовать PHP. Этот язык также содержит большое количество встроенных возможностей для работы с популярной , что делает выбор PHP для веб-программирования еще более привлекательным.
Начать использовать PHP очень просто: нужно создать в веб-пространстве файл с расширением *.php и поместить в него нужные PHP-инструкции. Например, создадим файл test.php в каталоге www вашего домена и поместим в него следующий текст:
<?
echo "Hello, world! This is my first program with PHP!";
?>
Теперь откройте страницу http://www.ваш_домен.ru/test.php и вы увидите результат выполнения скрипта. PHP - это просто. Простоты этому языку добавляет наличие отличной документации на русском языке, которая доступна . Есть отличный поиск по документации, примеры использования функций, а также прямо на сайте вы можете почитать рекомендации пользователей PHP по применению конкретных возможностей
поддерживаемые на нашем хостинге функции
Мы используем одну из последних версий PHP в виде модуля для веб-сервера Apache, которая собрана с поддержкой следующих модулей (функций):
- mysql
- ftp
- dbase
- gdbm
- ndbm
- xslt
- xslt-sablot
- iconv
- gd
- gd-native-ttf
- ttf
- zlib
- jpeg
- png
Также пользователь может скомпилировать свой собственный бинарный файл PHP, о чем написано ниже, и использовать его в cgi-режиме.
расширения файлов для PHP-скриптов, как добавить свое расширение
Интерпретатором PHP автоматически обрабатываются как PHP-сценарии файлы со следующими расширениями:
То есть, файлы, имеющие такие расширения, будут автоматически обрабатываться веб-сервером как PHP-скрипты. Например, index.php или 123.phtml. Пользователь может самостоятельно добавить собственные расширения для обработки соответствующих файлов как PHP-сценариев, поместив в файл строку вида:
AddType application/x-httpd-php .ext1 .php3
где ext1 и php3 - добавляемые расширения в названии файлов. Например, в данном случае PHP-скриптами будут считаться файлы index.ext1 и file.php3.
возможности изменения конфигурации PHP для пользователя
В некоторых случаях пользователю может понадобиться изменить настройки PHP. Есть два пути: собрать свой собственный PHP для дальнейшего использования в cgi-режиме и установка нужных параметров для PHP путем внесения соответствующих инструкций в .htaccess. Сейчас мы рассматриваем второй способ.
Для конфигурирования PHP нужно поместить в файл .htaccess команды php_flag и/или php_value. Список параметров PHP, которые таким образом пользователь может сконфигурировать, находится .
Пример конфигурирования через .htaccess:
php_value default_mimetype "text/html"
php_value default_charset "windows-1251"
Обратите особое внимание на то, что если в результате добавления своей директивы вы получили ошибку, то есть вероятность того, то конфигурирование соответствующего параметра просто недоступно пользователю. Если это так, попробуйте собрать свой PHP, но предварительно, пожалуйста, уточните у нашей действительно ли в этой ситуации вам нужен собственный PHP.
отправка писем с вложениями при помощи функции mail
Ссылки на готовые примеры скриптов, использующих функцию mail для отправки писем с вложениями, есть в документации на сайте разработчика: .
ошибка форума phpBB: Critical error. Error creating new session
Данная неработоспособность связана с "дыркой" в самом форуме
phpbb.
Cостоит она в том, что форум хранит в БД все сессии, не удаляя их, или удаляя с такой периодичностью, что, в конце концов, таблица сессий переполняется и форум выдаёт ошибку
"phpBB: Critical error. Error creating new session", т. к. не может работать дальше с таким количеством сессий.
Чтобы устранить ошибку выполните следующее:
1. откройте корневую директорию форума
2. откройте файл includes/sessions.php
3. найдите строку 152
4. замените эту строку
message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__,__FILE__, $sql);
на следующие:
$error = TRUE;
if (SQL_LAYER == "mysql" || SQL_LAYER == "mysql4")
{
$sql_error = $db->sql_error($result);
if ($sql_error["code"] == 1114)
{
$result = $db->sql_query('SHOW TABLE STATUS LIKE "'.SESSIONS_TABLE.'"');
$row = $db->sql_fetchrow($result);
if ($row["Type"] == "HEAP")
{
if ($row["Rows"] > 2500)
{
$delete_order = (SQL_LAYER=="mysql4") ? " ORDER BY session_time ASC" : "";
$db->sql_query("DELETE QUICK FROM ".SESSIONS_TABLE."$delete_order LIMIT 50");
}
else
{
$db->sql_query("ALTER TABLE ".SESSIONS_TABLE." MAX_ROWS=".($row["Rows"]+50));
}
if ($db->sql_query($sql))
{
$error = FALSE;
}
}
}
}
if ($error)
{
message_die(CRITICAL_ERROR, "Error creating new session", "", __LINE__, __FILE__, $sql);
}
5. сохраните файл и скопируйте на сервер, записав поверх существующего.
Теперь Вы можете не волноваться за переполнение таблицы сессий в базе данных форума phpBB.
как собрать свой собственный интерпретатор PHP
Для этого сначала нужно получить доступ к . Далее, зайдя в unix shell, действуйте по следующему алгоритму:
- В домашней директории создаем поддиректорию для временного хранения исходных текстов интерпретатора PHP. Создаем каталог с названием src командой mkdir src и заходим в него выполнив команду cd src
- Скачиваем с сайта разработчиков дистрибутив PHP:
wget http://ru.php.net/get/php-4.3.11.tar.bz2/from/this/mirror
- Распаковываем архив командой tar -xjvf php-4.3.11.tar.bz2
- Переходим в каталог php-4.3.11 командой cd php-4.3.11
- Используя команду ./configure выполняем предварительную конфигурацию PHP для дальнейшей компиляции. Выполнив команду ./configure --help | more вы увидите полный список возможных опций, из которых вам нужно выбрать нужные.
Пример конфигурации:
./configure --prefix=/home/uXXXX/php --with-mysql=/usr/local --enable-ftp \
--enable-dbase --with-gdbm --with-ndbm --enable-xslt --with-xslt-sablot \
--with-iconv=/usr/local --with-expat-dir=/usr/local --with-gd=/usr/local \
--enable-gd-native-ttf=/usr/local --with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local --with-freetype-dir=/usr/local --with-ttf \
--with-zlib-dir=/usr \
--enable-safe-mode --enable-memory-limit --disable-posix \
--enable-force-cgi-redirect \
--enable-track-vars --disable-syntax-hl --enable-inline-optimization \
--without-pear --disable-debug
Пример конфигурации с поддержкой imap:
./configure --prefix=/home/uXXXX/php --with-mysql=/usr/local --enable-ftp \
--enable-dbase --with-gdbm --with-ndbm --enable-xslt --with-xslt-sablot \
--with-iconv=/usr/local --with-expat-dir=/usr/local --with-gd=/usr/local \
--enable-gd-native-ttf=/usr/local --with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local --with-freetype-dir=/usr/local --with-ttf \
--with-zlib-dir=/usr \
--enable-safe-mode --enable-memory-limit --disable-posix \
--enable-force-cgi-redirect \
--enable-track-vars --disable-syntax-hl --enable-inline-optimization \
--without-pear --disable-debug --with-imap --with-imap-ssl
- Запускаем компиляцию и последующую установку уже сконфигурированного PHP:
make
make install
По завершению процессов сборки и установки в каталоге php/bin/ (выполняем cd ~/php/bin/) вы найдете исполняемый бинарный файл php.
- Посмотреть с какими модулями он был собран можно командой ./php -m (чтобы убедиться что вы собрали именно нужный вам PHP)
- Копируем php в ваш каталог cgi-bin и выставляем права на исполнение этого файла:
cp php /home/uXXXXX/имя_домена/cgi-bin/
chmod 755 /home/uXXXXX/имя_домена/cgi-bin/php
uXXXXX в этой команде нужно заменить на название вашей виртуальной площадки, а имя_домена - на название вашего домена, для которого мы устанавливаем новый PHP.
- В каталоге www создаем файл .htaccess со следующими директивами:
Action php-script /cgi-bin/php
AddHandler php-script .php
Теперь файлы с расширением *.php будут обрабатываться именно собранным вами PHP, а остальные PHP-скрипты (файлы с другими расширениями из тех, что обрабатываются нашим веб-сервером как PHP-скрипты) - основным PHP-модулем веб-сервера.
Если все работает, то каталог $HOME/php-4.3.11 можно удалить: cd; rm -rf php-4.3.11.
Установка Zend Optimizer
Для установки Zend Optimizer необходимо установить собственный интерпретатор PHP.
- Скачиваем с сайта разработчиков дистрибутив:
- Распаковываем закачанный архив Zend Optimizer в среде unix shell:
tar -zxf ZendOptimizer-2.5.5-freebsd4.3-i386.tar.gz
- Редактируем install.sh:
удаляем строки:
# Try to guess who is running this script ?
ID="id -u"
MYUID=`$ID 2>/dev/null`
if [ -z "$MYUID" ];
then
MYUID=`/usr/xpg4/bin/$ID 2>/dev/null`;
fi
if [ ! -z "$MYUID" ];
then
if [ $MYUID != 0 ];
then
error "You need root privileges to run this script!";
fi
fi
- Запускаем установку Zend Optimizer:
./install.sh
- При установке будут вопросы, отвечать так:
- Specify the location where to install Zend Optimizer:
/home/uХХХХХ/zend
- Confirm the location of your php.ini file
/home/uXXXXX/domainname.tld/cgi-bin/
- Are you using Apache Web server?
NO
- Проверяем:
bash-2.05b$ ./php -m
[PHP Modules]
Zend Optimizer
[Zend Modules]
Zend Extension Manager
Zend Optimizer
как выполнять PHP-скрипты в заданное время по расписанию
Иногда у PHP-программистов возникают задачи, которые требуют запуска PHP-скриптов в указанное время. Например, загрузка прайс-листа в базу данных, создание/удаление файлов на диске сервера, загрузка на сервер документов с других серверов и так далее. Можно использовать для этого возможности программы , которая работает на сервере.
Подробности о работе cron и его использовании вы найдете в отдельном . Здесь же мы опишем тонкости запуска таким образом именно PHP-скриптов.
На наших серверах установлен бинарный файл интерпретатора PHP, который можно вызывать из cron. Полный путь к нему - /usr/local/apache-php4/bin/php-cli. При запуске из cron полезно использовать опцию -q, которая заставляет PHP не выдавать http-заголовки - они как правило не нужны. В качестве параметра нужно передать полный путь до запускаемого PHP-скрипта. Пример задания для cron:
0 1 * * * /usr/local/apache-php4/bin/php-cli -q /home/uXXXX/script.php
В данном примере скрипт, который находится на диске сервера и имеет полный путь /home/uXXXX/script.php, запускается в 1 час ночи каждый день. Не забывайте нажимать Enter после каждой строки в cron - все строки в сценариях cron должны заканчиваться переводом строки или задание работать не будет.
ограничения
Нужно учитывать, что на работу PHP налагаются некоторые ограничения. По соображениям безопасности мы запретили использование следующих команд:
- dl
- shell_exec
- exec
- system
- passthru
- popen
- proc_open
- proc_nice
- proc_get_status
- proc_close
- proc_terminate
- posix_mkfifo
- set_time_limit
В случае, если какие-то из этих команд все же однозначно вам необходимы, можно собрать собственный бинарный файл PHP и использовать его в cgi-режиме. Если же на самом деле вы хотите использовать функции вроде exec для выполнения периодических заданий вроде бэкапа баз MySQL, пожалуйста, используйте для этого cron. Если же нужно разово выполнить какую-то команду, можно использовать для этого unix shell.
документация и полезные ссылки
В помощь вам мы приводим ссылки на полезные ресурсы по тематике PHP.
- - полная документация на русском языке с возможностью поиска
- - на русском языке
- - сервер CIT Forum
»