Подключение и настройка PHP

Подключение и настройка PHP
  1. Общая информация
  2. Как подключить PHP
  3. Ограничения PHP
  4. Какую версию PHP мы используем ?

Что такое PHP ?

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

Начало использования

После подключения возможности использования PHP-скриптов у Вас в панели управления, на главной странице появится новый пункт: «PHP детали». Перейдя по этой ссылке, запишите данные (FTP host и FTP login) и установите пароль для подключения к FTP-аккаунту для загрузки PHP-скриптов:  

Загрузка PHP-скриптов

Загрузка PHP - скриптов осуществляется по FTP соединению. Подключаться необходимо по данным предоставленным в окне «PHP детали» (на главной странице панели управления сайтом) и установленным Вами паролем.

Все скрипты необходимо загружать только в папку scripts (не в корневой каталог!). После загрузки PHP-скрипта в папку scripts, он будет доступен по адресу: http://php.ваш_сайт/example.php , либо http://ваш_сайт/php/example.php .

В последнем варианте используется так называемое проксирование. Это необходимо, например, для прямого обращения к PHP-скрипту через GET/POST запрос.

Подключение PHP-скриптов

На данный момент вывод на стороне сервера результата выполнения PHP-скрипта возможен только посредством использования функции "Импорт удалённого кода".

Минимальный период обновления информации составляет 3 часа. Результат выполнения скрипта на стороне клиента можно вывести, вставив следующий код в шаблон:

<?$PHPCODE$("http://ваш_сайт/php/скрипт.php")?>

Либо:

<div id="phpinfo1"></div> 
<script type="text/javascript">$.get('/php/SCRIPT_NAME.php',function(a){$('#phpinfo1').html(a)});</script>

Где phpinfo1, 1 — уникальный идентификатор в пределах одной страницы для каждого подключаемого PHP-скрипта. Первый вариант в пределах одной страницы можно использовать только один раз!

Как передать скрипту дополнительные параметры ?

Для этого необходимо использовать следующий код:

Вариант 1 (рекомендуется) — POST-запрос:

<div id="phpinfo1"></div>
<script type="text/javascript">
$.post('/php/SCRIPT_NAME.php',{
param1: 'value1',
param2: 'value2'
},function(a){
$('#phpinfo1').html(a);
});</script>

Принимать переданные значения в PHP-скрипте можно с помощью специального массива $_POST. Для параметров в выше написанном примере это будет: $_POST['param1'] и $_POST['param2']

Вариант 2 — GET-запрос:

<div id="phpinfo1"></div>
<script type="text/javascript">
$.get('/php/SCRIPT_NAME.php?param1=value1¶m2=value2',function(a){
$('#phpinfo1').html(a);
});</script>

Принимать значения переданные GET-запросом можно с помощью специального массива $_GET.  Для параметров в выше написанном примере это будет: 

$_GET['param1'] и $_GET['param2']

GET - запрос, в отличии от POST-запроса, передаёт параметры непосредственно в ссылке, поэтому на параметры и их значения для GET-запроса накладываются различные ограничения.

Использовать php-скрипты на страницах сайта можно в текущем домене через проксирование:

http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA&param1=valueB...&paramN=valueM

В шаблонах для вызова php-скрипта можно использовать функцию PHPCODE следующим образом:

<?$PHPCODE$("http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA&param1=valueB...&paramN=valueM")?>

где:

  • SITE_ADDRESS - адрес сайта пользователя, на котором выполняется скрипт
  • SCRIPT_NAME - путь (относительно папки scripts) и имя скрипта, который выполняется
  • ?param0=valueA&param1=valueB...&paramN=valueM - необязательные параметры для скрипта

Данная функция выполняет GET-запрос на указанный скрипт. Ответ для нее должен быть возвращен только в формате json, т.е. при использовании данной функции в шаблонах страниц, вызываемый ею скрипт не должен менять тип возвращаемых данных на какой либо другой (путем установки переменной $___notjson, использования функции header('Content-type: TYPE') и т.п.). Использовать ее можно 1 раз на страницу.

Для вызова методом GET нескольких скриптов на одной странице можно использовать исходный javascript код функции $PHPCODE$, изменяя идентификатор (id) тега <div id="phpdiv">

Реализовать использование POST-запросов можно через формы, iframe, другие скрипты этого домена и т.д.

Например в файле шаблона:

<script type="text/javascript">
 function updatepostdata(result) { $('#postdiv').html(result); }
</script>
<div id="postdiv"></div>
<iframe frameborder="0" src="http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA&param1=valueB...&paramN=valueM"></iframe>

в скрипте SCRIPT_NAME.php:

<?
$___notjson=1;
if ($_POST)
{
 $ret="POST OK:<br>";
 foreach ($_POST as $i => $val) $ret.="$i=$val<br>";
 echo "<script type=\"text/javascript\">
 window.parent.updatepostdata(\"$ret\");
 </script>";
}
echo "<form action=\"http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA&param1=valueB...&paramN=valueM\" method=\"POST\">
<input type=\"hidden\" name=\"field0\" value=\"test_".rand()."\">
<input type=\"submit\" value=\"Go\">
</form>";
?>

или в файле шаблона:

<script type="text/javascript">
 function updatepostdata(result) { $('#postdiv').html(result); }
</script>
<div id="postdiv"></div>
<iframe frameborder="0">
 <form action=\"http://SITE_ADDRESS/php/SCRIPT_NAME.php?param0=valueA&param1=valueB...&paramN=valueM\" method=\"POST\">
 <input type=\"hidden\" name=\"field0\" value=\"test_".rand()."\">
 <input type=\"submit\" value=\"Go\">
 </form>
</iframe>

в скрипте SCRIPT_NAME.php:

<?
$___notjson=1;
if ($_POST)
{
 $ret="POST OK:<br>";
 foreach ($_POST as $i => $val) $ret.="$i=$val<br>";
 echo "<script type=\"text/javascript\">
 window.parent.updatepostdata(\"$ret\");
 </script>";
}
else echo "No data<br>";
?>

Есть несколько параметров, которыми можно управлять в скрипте:

  • $___notjson=1 - если данная переменная установлена в единицу, то результат работы скрипта возвращается в том виде, в каком его сформировал скрипт, иначе (по умолчанию) результат возвращается в json формате
  • $___retval - результат работы скрипта (возвращенные им данные), может быть установлена в скрипте пользователя и будет использоваться, как результат работы
  • $___error - используется как описание ошибки в случае, если скрипт должен ее вернуть.

Не используйте __FILE__, т.к. скрипты выполняются через wrapper, и данная переменная определена как название wrapper-скрипта.

Как передать скрипту файл?

Передать PHP-скрипту файл на обработку можно с помощью обыкновенной формы с типом "multipart/form-data":

<form action="/php/SCRIPT_NAME.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="Загрузить">
</form>

Переданный скрипту файл можно получить из массива $_FILES: $_FILES['filename']['tmp_name']

Встроенные функции

  • ucoz_getinfo(DATATYPE); Где DATATYPE — тип данных о пользователе, которые нужно вернуть. На данный момент доступен только один тип данных — SITEUSERID. Данный тип определяет ID пользователя, зашедшего на сайт. То есть, чтобы в PHP-скрипте вывести ID текущего пользователя необходимо использовать функцию: ucoz_getinfo("SITEUSERID");

Примечания

  • По умолчанию результат выполнения скрипта возращается в JSON формате.
  • Для вывода результата выполнения скрипта в обычном формате, в начале скрипта добавьте: $___notjson=1;
  • Для вывода ошибок используйте: $___error;

Полная инструкция по использованию PHP на uCoz находится здесь.

Внимание! Любые попытки использовать PHP-скрипты для злонамеренных действий, в частности для отправки большого числа HTTP-запросов куда-либо, наказываются удалением сайта!

Как подключить PHP

Данная услуга является платной.

Она доступна в рамках пакетов: 

  • Оптимальный
  • Максимальный
  • Магазин

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

Ограничения использования PHP

Запрещено использование следующих функций:

  • Системные вызовы (proc_open, proc_terminate, shell_exec, system и т.д.)
  • Низкоуровневые функции по работе с файловой системой (dio_fcntl, dio_open, dio_read, dio_seek и т.д.);
  • Posix функции;
  • Shared memory функции;
  • MySQL функции (mysql_stat, mysql_pconnect);
  • Функции для отправки почты ( mail() );
  • Функции для работы с FTP (ftp_connect() и прочие; для работы с FTP используйте cURL);
  • Максимальный размер файла, обрабатываемого PHP-скриптом, либо загружаемого на PHP-сервер, равен 10 Mb;
  • Максимальное количество файлов и директорий в одной директории на PHP-сервере равно 500;
  • Максимальное общее количество всех файлов и дирректорий на PHP-сервере равно 10'000;
  • Максимальное время выполнения скрипта равно 25 секунд;
  • Доступное дисковое пространство на PHP-сервере для каждого пользователя равно 200 Mb;
  • По прямым ссылкам можно получить только файлы с расширением PHP. То есть, если вы загрузите на PHP-сервер, например, файл example.html, то по ссылке http://ваш_сайт/php/example.html он не откроется. Такие файлы могут быть открыты только посредством PHP-скриптов.

Актуальный список функций, которые запрещено использовать

popen,pclose,stream_copy_to_stream,dio_close,dio_fcntl,dio_open,dio_read,dio_seek,dio_stat,dio_tcsetattr,dio_truncate,dio_write,exec,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,system,expect_expectl,expect_popen,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_getpriority,pcntl_setpriority,pcntl_signal_dispatch,pcntl_signal,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,posix_access,posix_ctermid,posix_errno,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_initgroups,posix_isatty,posix_kill,posix_mkfifo,posix_mknod,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,ftok,msg_get_queue,msg_queue_exists,msg_receive,msg_remove_queue,msg_send,msg_set_queue,msg_stat_queue,sem_acquire,sem_get,sem_release,sem_remove,shm_attach,shm_detach,shm_get_var,shm_has_var,shm_put_var,shm_remove_var,shm_remove,shmop_close,shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write,apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_lookup_uri,apache_note,apache_request_headers,apache_reset_timeout,apache_response_headers,apache_setenv,getallheaders,virtual,nsapi_request_headers,nsapi_response_headers,nsapi_virtual,mail,mysql_stat,mysql_pconnect,net_get_interfaces
 

Какую версию PHP использует uCoz ?

На сентябрь 15.11.2023 актуальна PHP Version 5.2.12.

Подключение и настройка PHP