В любое время skype скачать поможет надежный сайт. | |
Телефоны в Липецке: +7 (4742) 71-02-01, 71-02-02обратная связь Вход для клиентов [логин / пароль]:
/
забыли пароль?
о компании регистрация доменов хостинг оборудование как стать клиентом техподдержка дополнительные услуги контакты
другие зоны




Заказать

Техническая документация


PHP: использование программ на языке PHP

Пользователям хостинга предоставляется возможность использовать на своих сайтах программы на языке PHP(в соответствии с тарифным планом). У нас установлена одна из последних версий PHP и мы стараемся по мере возможности ее обновлять. Текущую конфигурацию можно посмотреть при помощи функции phpinfo().

Пример скрипта для просмотра конфигурации PHP: <?
phpinfo();
?>

Что такое PHP и как начать с ним работать

PHP: Hypertext Preprocessor — очень простой даже для начинающего веб-программиста язык, который, тем не менее, обладает очень серьезными возможностями. PHP — язык достаточно высокого уровня, что позволяет просто реализовывать на нем именно веб-проекты, не заботясь при этом о ненужных низкоуровневых процессах. Если вы хотите добавить динамику и интерактив на свой сайт, но при этом не хотите изучать более сложные языки вроде Perl, можно использовать PHP. Этот язык также содержит большое количество встроенных возможностей для работы с популярной СУБД MySQL, что делает выбор 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
  • *.phtml

То есть, файлы, имеющие такие расширения, будут автоматически обрабатываться веб-сервером как PHP-скрипты. Например, index.php или 123.phtml. Пользователь может самостоятельно добавить собственные расширения для обработки соответствующих файлов как PHP-сценариев, поместив в файл .htaccess строку вида:

AddType application/x-httpd-php .ext1 .php3

где ext1 и php3 — добавляемые расширения в названии файлов. Например, в данном случае PHP-скриптами будут считаться файлы index.ext1 и file.php3.

Отправка писем с вложениями при помощи функции mail

Ссылки на готовые примеры скриптов, использующих функцию mail для отправки писем свложениями, есть в документации на сайте разработчика: LII. Mail Functions.

Ошибка форума 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.

Проблемы работы функций strtoupper() и strtolower() с кириллицей

Проблемы при работе с кириллицей в PHP-скриптах функций strtoupper() и strtolower() возникают, когда неправильно определена текущая локаль (locale). Для правильного её определения следует воспользоваться функцией setlocale() в самом начале вашего PHP-сценария:

<?php

setlocale
(LC_ALL, 'ru_RU.CP1251');

echo
strtoupper('Работает!');

?>

Возможности изменения конфигурации PHP для пользователя

Внимание! В случае изменения конфигурации PHP или сборки собственного интерпретатора предварительно необходимо определить, какая версия операционной системы установлена на сервере, где находится ваша площадка. В настоящее время происходит постепенный процесс миграции с ОС FreeBSD 4.1 на ОС FreeBSD 6.1. В зависимости от этого вам нужно использовать ту или иную версию конфигурационного файла или интерпретатора PHP, ниже обращайте внимание на различие в путях к файлам для разных версий ОС.

Для того, чтобы узнать текущую версию ОС на вашем сервере, выполните команду:

uname -a

Версия ОС будет указана в выводе данной команды:

FreeBSD 4.11-RELEASE-p13
или FreeBSD 6.1-RELEASE-p10

Очень часто пользователю требуется так или иначе изменить настройки PHP для работы со скриптами. Существует два возможных варианта.

Случай 1. необходимо внести изменения на уровне компиляции (сборки) PHP (добавление модулей, изменение системных опций PHP_INI_SYSTEM).

Случай 2. достаточно изменить значение одной или нескольких опций, имеющих статус изменяемости PHP_INI_PERDIR или PHP_INI_ALL.

Напомним значение и расшифровку констант PHP_INI_*:
PHP_INI_USER1Опция может быть установлена в пользовательских скриптах
PHP_INI_PERDIR2Опция может быть установлена в php.ini, .htaccess или httpd.conf
PHP_INI_SYSTEM4Опция может быть установлена в php.ini или httpd.conf
PHP_INI_ALL7Опция может быть установлена где угодно
Список, описание и статус изменяемости директив можно найти в приложении G документации PHP.

В первом случае, когда нам нужно изменить конфигурацию PHP добавлением новых модулей (imap, templates, curl), с которыми не собран наш модульный PHP. Если это так, необходимо собрать свой PHP. После сборки рекомендуется скопировать наш INI-файл

Для FreeBSD 4.1: /usr/local/apache-php4/php/php-cgi.ini или /usr/local/apache-php4/php/php-cli.ini

Для FreeBSD 6.1 /usr/local/php5/etc/php-cgi.ini или /usr/local/php5/etc/php-cli.ini в зависмости от вида используемого SAPI-интерфейса (cgi или cli).

Во втором случае, когда не требуется использование каких-либо дополнительных модулей, а необходимо лишь изменить значение управляемых в php.ini директив — следует просто скопировать уже собранный исполняемый файл php-SAPI на площадку и произвести необходимые действия с .htaccess.

Для FreeBSD 4.1: /usr/local/apache-php4/bin/php-cgi или /usr/local/apache-php4/bin/php-cli Для FreeBSD 6.1: /usr/local/php5/bin/php-cgi или /usr/local/php5/bin/php-cli в зависмости от вида используемого SAPI-интерфейса.

В случае, если установленные значения директив в наших INI-файлах совпадают с желаемыми — копировать INI-файл не нужно. В частности, такие действия проводятся, когда требуется увеличить значение memory_limit для PHP. Если предполагается изменение директив в php-SAPI.ini — его следует скопировать, подобно описанному выше способу.

Для FreeBSD 4.1: ls /usr/local/apache-php4/php/php-*.ini |
awk '{print $1}' | xargs grep memory_limit
/usr/local/apache-php4/php/php-cgi.ini:
memory_limit = 32M
/usr/local/apache-php4/php/php-cli.ini:
memory_limit = 32M
Для FreeBSD 6.1: ls /usr/local/php5/etc/php-*.ini |
awk '{print $1}' | xargs grep memory_limit
/usr/local/php5/etc/php-cgi.ini:
memory_limit = 32M
/usr/local/php5/etc/php-cli.ini:
memory_limit = 32M

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

Как собрать свой собственный интерпретатор PHP

Внимание! В случае изменения конфигурации PHP или сборки собственного интерпретатора предварительно необходимо определить, какая версия операционной системы установлена на сервере, где находится ваша площадка. В настоящее время происходит постепенный процесс миграции с ОС FreeBSD 4.1 на ОС FreeBSD 6.1. В зависимости от этого вам нужно использовать ту или иную версию конфигурационного файла или интерпретатора PHP, ниже обращайте внимание на различие в путях к файлам для разных версий ОС.

Для того, чтобы узнать текущую версию ОС на вашем сервере, выполните команду: uname -a Версия ОС будет указана в выводе данной команды: FreeBSD 4.11-RELEASE-p13 или FreeBSD 6.1-RELEASE-p10

Для того, чтобы собрать свой собственный интерпретатор PHP сначала нужно получить доступ к unix shell. Далее, зайдя в unix shell, действуйте по следующему алгоритму:

  • В домашней директории создаем поддиректорию для временного хранения исходных текстов интерпретатора PHP. Создаем каталог с названием src командой mkdir src и заходим в него, выполнив команду cd src
  • Скачиваем с сайта разработчиков дистрибутив PHP: wget http://ru.php.net/get/php-5.1.6.tar.bz2/from/this/mirror
  • Распаковываем архив командой tar -xjvf php-5.1.6.tar.bz2
  • Переходим в каталог php-5.1.6 командой cd php-5.1.6
  • Используя команду ./configure выполняем предварительную конфигурацию PHP для дальнейшей компиляции. Выполнив команду ./configure --help | more вы увидите полный список возможных опций, из которых вам нужно выбрать нужные.
  • Пример конфигурации: ./configure --prefix=/home/Client_ID/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-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/Client_ID/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-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)
  • Копируем исполняемый файл в ваш каталог cgi-bin, выставляем необходимые права: cp /home/uXXXXX/php/bin/php
    /home/Client_ID/cgi-bin/

    chmod 755 /home/Client_ID/cgi-bin/php

    Копируем конфигурационный файл в ваш каталог cgi-bin

    для FreeBSD 4.1: cp /usr/local/apache-php4/php/php-cgi.ini
    /home/Client_ID/cgi-bin/php.ini
    для FreeBSD 6.1: cp /usr/local/php5/etc/php-cgi.ini
    /home/Client_ID/cgi-bin/php.ini
  • Client_ID в этой команде нужно заменить на название вашей виртуальной площадки для которого мы устанавливаем новый PHP.
  • В каталоге www создаем файл .htaccess со следующими директивами: Action php-script /cgi-bin/php
    AddHandler php-script .php
    Теперь файлы с расширением *.php будут обрабатываться именно собранным вами PHP, а остальные PHP-скрипты (файлы с другими расширениями из тех, что обрабатываются нашим веб-сервером как PHP-скрипты) — основным PHP-модулем веб-сервера.

Если все работает, то каталог $HOME/php-5.1.6 можно удалить: cd; rm -rf php-5.1.6

Как подключить модуль templates к интерпретатору PHP

Для установки модуля templates необходимо установить собственный интерпретатор PHP.
  • В домашней директории создаем поддиректорию для временного хранения исходных текстов интерпретатора PHP.
    Создаем каталог с названием src командой mkdir src и заходим в него выполнив команду cd src : $ mkdir src
    $ cd src
  • Скачиваем с сайта разработчиков дистрибутив PHP: $ wget http://ru.php.net/get/php-5.1.6.tar.bz2/from/this/mirror
  • Распаковываем архив, переходим в каталог расширений: $ tar -xjvf php-5.1.6.tar.bz2
    $ cd php-5.1.6/еxt
  • Скачиваем дистрибутив php-templates: $ wget \
    http://surfnet.dl.sourceforge.net/sourceforge
    /php-templates/php_templates-1.7.2.tar.gz
  • Распаковываем архив в текущую директорию: $ tar xzfv php_templates-1.7.2.tar.gz
    $ cd templates/
  • Выполняем следующий скрипт, которые удалит ненужные символы возврата каретки в файлах дистрибутива модуля: $ for f in *; do cp $f $f.old; cat $f.old
    | tr -d "\r" > $f; rm $f.old; done
  • Переходим в директорию PHP: $ cd ../../
  • Выполняем: $ autoconf259
    $ chmod 775 ./
  • Используя команду ./configure выполняем предварительную конфигурацию PHP для дальнейшей компиляции. Выполнив команду ./configure --help | more вы увидите полный список возможных опций, из которых вам нужно выбрать нужные.

    Пример конфигурации: ./configure --prefix=/home/uXXXXX/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-memory-limit \
    --disable-posix \ --enable-force-cgi-redirect \
    --enable-track-vars --disable-syntax-hl \
    --enable-inline-optimization \ --without-pear \
    --disable-debug --enable-templates
  • Запускаем компиляцию и последующую установку уже сконфигурированного PHP: $ gmake
    $ gmake install
  • По завершению процессов сборки и установки в каталоге php/bin/ вы найдете исполняемый бинарный файл php, собранный с модулем templates $ cd ~/php/bin/
    $ ./php -m
    [PHP Modules]
    ctype
    dba
    dbase
    ftp
    gd
    iconv
    mysql
    overload
    pcre
    session
    standard
    templates
    tokenizer
    xml
    xslt
    zlib

Дальнейшие действия по использованию собранного бинарного файла были описаны выше.

Установка Zend Optimizer

Обратите внимание, на наших виртуальных серверах можно установить Zend Optimizer только до версии 2.6.0 включительно.

Для установки Zend Optimizer необходимо установить собственный интерпретатор PHP.

  • Скачиваем с сайта разработчиков дистрибутив.
  • Распаковываем закачанный архив Zend Optimizer в среде unix shell:

    tar -zxf ZendOptimizer-2.6.0-freebsd4.3-i386.tar.gz

  • Редактируем install.sh:

    находим вызов функции check_root_permissions() и комментируем его: #check_root_permissions

    # Go to the package directory:
    if [ ! -d $INSTALL_DIR ]; then
    cd `dirname $0` 2> /dev/null
    fi
  • Запускаем установку Zend Optimizer:

    ./install.sh

  • При установке будут вопросы, отвечать так:

    • Specify the location where to install Zend Optimizer:
      /home/Client_ID/zend
    • Confirm the location of your php.ini file
      /home/Client_ID/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, которая работает на сервере.

Подробности о работе cron и его использовании вы найдете в отдельном документе. Здесь же мы опишем тонкости запуска таким образом именно PHP-скриптов.

На наших серверах установлен бинарный файл интерпретатора PHP, который можно вызывать из cron. Полный путь к нему — /usr/local/apache-php4/bin/php-cli. В качестве параметра нужно передать полный путь до запускаемого PHP-скрипта. Пример задания для cron: 0 1 * * * /usr/local/apache-php4/bin/php-cli /home/Client_ID/www/script.php или 0 1 * * * /usr/local/php5/bin/php-cli /home/Client_ID/www/script.php
в случае с PHP 5.

В данном примере скрипт, который находится на диске сервера и имеет полный путь /home/Client_ID/www/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:




 
4 мая 2012

Обновление аппаратного обеспечения

04.05.2012 с 23 до 00 часов по Московскому времени часть сайтов будет недоступна в связи с обновлением аппаратного обеспечения серверов. Приносим извинения за доставленные неудобства. 20 августа 2011

Обновление хостинга

С 20 по 27 августа будет проходить плановое обновление аппаратного и программного обеспечения хостинга. архив сообщений
как стать клиентом

Шаг 1

Выберите тарифный план

Шаг 2

Выберите доменное имя

Шаг 3

Получите доступ к панели управления
наши клиенты
наши проекты
для оперативного общения
общие вопросы - main@lipetskhost.ru тех. поддержка - support@lipetskhost.ru
+7 (4742) 71-02-02, 24-04-55 +7 (4742) 71-02-01
 
полезно знать

Двойники в Интернете

Если внимательно взглянуть на любую область жизнедеятельности человека, то можно увидеть, что рано или поздно появляются идеи, ранее никем не реализованные. Со временем точно также начинают делать и остальные...
 
Copyright © 2006-2012 LipetskHost.ru
Лицензия № 44930 от 24.10.2006
Проект Агентства АРТполитика.
Все права защищены.
создание сайтов, интернет-магазинов, продвижение, поисковая оптимизация, хостинг, сопровождение web-проектов | Агентство АРТполитика