Как запустить скрипт php на хостинге

Через браузер всё запускается отлично, а через консоль не видит команды Пытаюсь запустить скрипт командой php 1.php пишет -bash: php: command not found php7 1.php пишет -bash: php7: command not found php7-cli 1.php пишет -bash: php7-cli: command not f

Пишем простой скрипт для проверки кода ответа сервера

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

Сразу после запуска скрипт выбирает все файлы с расширением из папки . Затем выводит данный список пользователю в формате и ждет от пользователя ввода номера интересующего его файла.

Получение всех файлов по маске делается просто, для этого воспользуемся стандартной функцией , а вот с чтением данных из консоли всё немного интересней. Дело в том, что после запуска скрипта из командной строки в нем открываются три стандартных потока: для вывода (STDOUT), ввода (STDIN) и ошибок (STDERR). Указатели на эти потоки доступны для скрипта в виде одноименных констант и работать с ними можно так же как, например, с обычными файлами. Таким образом, чтобы прочитать данные из консоли достаточно просто прочитать строку из потока ввода: .

  $files = glob('files/*.txt');
  
  $files or exit('No files to check.'.PHP_EOL);
  
  echo 'Files in folder: '.count($files).PHP_EOL;
  foreach ($files as $index => $name) {
      echo " => {$name}".PHP_EOL;
  }
  
  echo 'Choose the file: ';
  $choice = intval(fgets(STDIN));

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

  array_key_exists($choice, $files) or exit('Wrong file selected.'.PHP_EOL);

  $file = $files;
  
  echo "Processing file '{$file}'...".PHP_EOL;
  
  $start_time = microtime(true);
  $code_stats = array();
  
  $f = fopen($file, 'r');

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

  while ($url = trim(fgets($f))) {
      $headers = get_headers($url);
      
      if (is_array($headers)) {
          array_key_exists($headers, $code_stats) or $code_stats] = 0;
          $code_stats]++;
          echo date('H:i:s')." HTTP code '{$headers}' for url '{$url}'".PHP_EOL;
      }
      else {
          array_key_exists('Unknown', $code_stats) or $code_stats = 0;
          $code_stats++;
          echo date('H:i:s')." Problem with url '{$url}'".PHP_EOL;
      }
  }
  
  fclose($f);

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

  $elapsed_time = round(microtime(true) - $start_time, 3);
  
  echo "File processed in {$elapsed_time}s".PHP_EOL;
  echo "Code stats are:".PHP_EOL;
  print_r($code_stats);

Результатом работы такого приложения может быть, например, такой вывод:

  $ php check.php 
  Files in folder: 1
   => files/db.txt
  Choose the file: 0
  Processing file 'files/db.txt'...
  18:33:43 HTTP code 'HTTP/1.0 200 OK' for url 'http://mail.ru/'
  18:33:45 HTTP code 'HTTP/1.1 301 Moved Permanently' for url 'http://yandex.ru/'
  18:33:46 HTTP code 'HTTP/1.1 302 Moved Temporarily' for url 'http://rambler.ru/'
  18:33:47 HTTP code 'HTTP/1.0 301 Moved Permanently' for url 'http://google.ru/'
  File processed in 5.558s
  Code stats are:
  Array
  (
      [HTTP/1.0 200 OK] => 1
      [HTTP/1.1 301 Moved Permanently] => 1
      [HTTP/1.1 302 Moved Temporarily] => 1
      [HTTP/1.0 301 Moved Permanently] => 1
  )

Метод бесконечного выполнения PHP процесса запуск из консоли

В принципе, различие с запуском PHP скрипта из браузера практически отсутствует, за исключением того, что все данные о работе PHP скрипта выводятся в консоль и еще несколько небольших нюансов. Сам PHP скрипт также должен содержать set_time_limit(0); и ignore_user_abort(true);. Запуск PHP скрипта из *nix консоли осуществляется командой $ php -q scriptfile.php (для подключения к консоли я использовал Putty). Ключ -q (—no-header) обозначает что процесс должен быть запущен в тихом режиме и подавляет вывод заголовков HTTP которые обычно отправляются браузеру. $ man php позволит посмотреть другие интересующие ключи. Отличная документация на официальном сайте PHP которая помогла не только разобраться с запуском PHP скриптов из консоли, но и позволила внести существенные улучшения в сам PHP скрипт

Обратите внимание, что вы можете перенаправить вывод результатов выполнения скрипта в любой файл на сервере, используя символ ‘больше’ (‘>’), как обычно я и поступаю

$ php -q scriptfile.php > scriptfileoutput.txt 

PHP может быть использован для запуска PHP-скриптов в абсолютной независимости от Apache, но у меня нет уверенности что без Apache будет работать механизм сокетов, я не пробовал запускать без Apache — мне это показалось не к чему. Запуск через консоль считается более правильным нежели через веб-браузер, но он также как и запуск через браузер не способен решить ряд проблем. Возможно такой запуск и избавит нас от прекращения работы скрипта при перезапуске Apache и то это маловероятно, но что делать, если весь веб-сервер или виртуальная машина будет перезагружена. Вам придётся в ручную лезть на сервер и запускать скрипт, конечно если у вас большой игровой проект и есть выделенные системные администраторы которые мониторят состояние процессов на сервере и есть скрипты инициализации и загрузки ws сервера вместе с Apache и всем остальным, в таком случае это единственно правильный вариант, но мы говорим о бытовом удобном способе реализации ws сервера на PHP для небольших проектов. Также иногда встречается проблема при запуске PHP скрипта из консоли, которая прекращает выполнение PHP скрипта одновременно с тем когда вы выходите из консили, это связано с тем что выполнение PHP скрипта было привязано к вашей сессии как к клиенту. По идее это должно залечиваться использованием в PHP скрипте строки ignore_user_abort(true);, но это помогает не всегда в связи с разными настройками PHP. В таком случае используют трюк, давая PHP скрипту поток /dev/null, который он будет считать клиентом и не прекратит работу при вашем выходе из консоли.

$ php -q scriptfile.php  scriptfileoutput.txt &

Амперсанд в конце обязателен, чтобы вы могли нажать Ctrl+C и вернуться в консоль а процесс остался в памяти. Или можно воспользоваться утилитой nohup.

В добавок, будет полезно знать, что и на windows-платформе можно запускать выполнение скрипта из консоли

> w:\usr\local\php5\php.exe -q w:\home\localhost\www\echows.php

Если всё делать правильно, то лучше воспользоваться утилитой Supervisor: A Process Control System она следит за работой процесса, в случае необходимости запускает его, осуществляет регистрацию падений. Отличная правильная вещь, когда вы делаете серьезный проект и в вашем распоряжении выделенный сервер или хотя бы VDS.

Отслеживание и остановка демонов

Проверить, запущен ли процесс демона можно просто открыв список процессов в системе:

Ps -aux

Найти демона в списке процессов несложно, как по команде запуска, так и по PID:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 22193 0.1 0.2 393180 72132 ? S Apr24 5:05 php -f /path/to/your/daemon.php &

Остановить процесс демона
можно так же, как и любой другой процесс:

Kill xxxx

В приведённом примере xxxx – это и есть PID, идентификатор процесса.

Стоит отметить, что это не остановка, а именно “убийство” процесса демона. Дело в том, что работа скрипта будет прервана где попало, что не всегда и не всем подходит. По идее, в таком случае демона нужно останавливать где-то между его итерациями и уже не из консоли. К примеру, мы можем создать в базе данных или в каком-то файле на сервере заявку на остановку скрипта, а между итерациями демона проверять, нет ли такой заявки. Если заявка будет обнаружена, остановить цикл оператором break
.

Как запустить php-демона

А как вообще запускают php-скрипты? Если это веб-приложение, то при помощи браузера и веб-сервера. Но этот вариант не подходит, ведь мы имеем дело с бесконечным скриптом, а время выполнения скриптов ограничены директивой max_execution_time
в php.ini
. Следовательно, бесконечный скрипт необходимо запускать через консоль, ведь тогда максимальное время его выполнения не учитывается
. Примерно так выглядит команда запуска демона:

Php -f /path/to/your/daemon.php &

Для ручного запуска её нужно ввести в ssh терминале (putty, WinSCP и т.д.), а для запуска системой при загрузке – в соответствующий файл автозагрузки (положение и название файла зависит от операционной системы)

Обратите внимание, что консольный скрипт демона запускается в фоновом режиме
, не вовлекая пользователя в ожидание его завершения (ведь скрипт бесконечен). Именно в наличии возможности запустить процесс в фоновом режиме и лежит причина того, что описываемый мной способ не подходит для Windows-серверов

После запуска в консоли должен отобразиться идентификатор процесса
нашего демона, так называемый PID.

Размещение и запуск веб-сокет сервера на хостинге

Простота состоит в том, что именно с запуском никаких проблем нет. Вы можете взять PHP скрипт echows.php из прошлой статьи, совершенно ничего в нём не меняя, закачать на хостинг и обратиться к файлу из браузера, единственным отличием от выполнения в Денвере может быть то, что настройки Apache и кэширующих механизмов хостинга запрещают выводить информацию незавершенного PHP скрипта, в таком случае вы не увидите никакой информации в окне браузера, а страница продолжит грузиться в браузере. Но если попробуете подключиться к ws серверу из нашего ws клиента, то вы увидите что подключение прошло успешно и на ws echo сервер отвечает на все передаваемые запросы. В качестве адреса ws сервера в ws клиенте, естественно, нужно указать ws://yourdomain.com:8889. Как видите, всё в порядке. Единственная проблема с которой вы можете столкнуться это настройки файрволлов хостинга и занятость портов другими сервисами. Если у вас несколько доменов на одном IP адресе, то вы можете обращаться к ws серверу по адресу этого домена ws://anotheromain.com:8889 что, согласитесь не очень хорошо, особенно для хостинга где сотни веб-сайтов висят на одном домене, теоретически кто-то может использовать те же порты что и вы и это может привести к неработоспособности ws сервера, поэтому еще раз настоятельно рекомендую аккуратно выбирать порты и следить за тем, чтобы по прекращению работы ws сервер всегда закрывал все соединения и корректно закрывал сокеты. Теперь что касается самого PHP скрипта, как вы могли заметить, наш PHP скрипт живет только 100 секунд, после чего при попытке подключения или отправке сообщения, он закрывает все соединения и завершает своё выполнение. Как сделать так, чтобы он жил «вечно»? Есть достаточное количество методов. Но проблема не в том, что PHP скрипт должен выполняться бесконечно, а проблема в том, как обеспечить корректное завершение работы скрипта в различных ситуациях и затем коректно возобновлять его работу. Например, при выключении сервера и последующем его включении PHP скрипт сам не запустится, а отслеживать работает ли ws сервер и если не работает в ручную его запускать, очень плохая идея.

Запуск встроенного в PHP веб-сервера

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

Опции следующие:

  -S : Запустить встроенный веб-сервер.
  -t      Указать корневую папку документов  для встроенного веб-сервера.

Допустим, в качестве прослушиваемого IP адреса я хочу установить 127.0.0.1, в качестве прослушиваемого порта — 84, корневая папка документов веб-сервера у меня расположена в C:\Users\Alex\Documents\PHP\, тогда команда запуска следующая:

php -S 127.0.0.1:84 -t C:\Users\Alex\Documents\PHP\

В этой папке у меня файл test_2.php со следующим содержимым:

<?php print ("
ПараметрЗначение
Удалённый IP” . $_SERVER . “
Пограммы сервера” . $_SERVER . “
Язык” . $_SERVER . “
Откуда пришёл” . $_SERVER . “
Браузер (или что там)” . $_SERVER . “
Метод запроса” . $_SERVER . “
Время запроса” . $_SERVER . “
Строка запроса” . $_SERVER . “
Заголовок запроса” . $_SERVER . “
Адрес запроса” . $_SERVER . “
Название сервера” . $_SERVER . “

В консоли вижу:

В самом браузере:

Можно было бы из спортивного интереса попробовать во встроенном веб-сервере запустить WordPress, но что-то лень…

Система управления демонами

А что, если требуется создать и отслеживать сразу много демонов? К примеру, в упомянутом выше сервисе CheckTrust обработкой данных и проектов пользователей занимаются > 30 таких скриптов. Создавать и следить за ними из консоли очень неудобно – нужен более дружественный интерфейс.

Круто, да? :) Как раз для создания подобной системы было бы неплохо иметь доступ к командной строке из php. Каждый демон – запись в базе данных, напротив которой можно проставить команду его запуска, а так же PID процесса. Следовательно, появляется возможность запускать, останавливать и отслеживать статус демонов прямо из веб-интерфейса. В итоге сами демоны у меня получились частью консольного приложения, а система управления ими – частью веб-приложения.

Поскольку система, показанная выше, заточена строго под CheckTrust, её код показывать я не буду. Зато скопирую сюда код php класса для управления процессами
, который я использовал при её создании:

&lt?php
/*
* Process.php
* An easy way to keep in track of external processes.
* Ever wanted to execute a process in php, but you still wanted to have somewhat controll of the process ? Well.. This is a way of doing it.
* @compability: Linux only. (Windows does not work).
* @author: Peec
*/
class Process{
private $pid;
private $command;
public function __construct($cl=false){
if ($cl != false){
$this->command = $cl;
$this->runCom();
}
}
private function runCom(){
$command = “nohup “.$this->command.” > /dev/null 2>&1 & echo $!”;
exec($command ,$op);
$this->pid = (int)$op;
}
public function setPid($pid){
$this->pid = $pid;
}
public function getPid(){
return $this->pid;
}
public function status(){
$command = “ps -p “.$this->pid;
exec($command,$op);
if (!isset($op))return false;
else return true;
}
public function start(){
if ($this->command != “”)$this->runCom();
else return true;
}
public function stop(){
$command = “kill “.$this->pid;
exec($command);
if ($this->status() == false)return true;
else return false;
}
}
?>

Единственный недостаток этого класса – то, что я уже описывал ваше – он останавливает процессы методом kill, но мне пока что этого достаточно:) А вот и пример его использования:

// Запуск демона и получение PID (предполагается, что pid где-то сохраняется после запуска)
$command = “”;
$process = new Process($command);
$processId = $process->getPid();
// Проверка статуса демона
$process = new Process();
$process->setPid($processId);
$status = $process->status(); // возвращает true или false
// Остановка демона
$process = new Process();
$process->setPid($processId);
$stopped = $process->stop(); // возвращает true или false

Подводя итог, хочу сказать, что это не единственно возможная и, вполне возможно, не самая оптимальная реализация демонов на php. К примеру, для многопроцессовых демонов существует крутое расширение PHP PCNTL . Кто-то, возможно, даже скажет, что для консольных приложений существуют совсем другие языки программирования. Но, как ни крути, у данной реализации есть неоспоримые преимущества:

  • Она простая
    , как тапок. Демон – это просто бесконечный цикл, куда уж проще.
  • Она совместима с веб-приложениями
    – являясь частью веб-сервиса, мои демоны опираются на существующие наработки, используют те же модели данных, классы и методы работы с ними.
  • Она работает!
    Серьёзно – некоторые демоны у нас запущены уже несколько месяцев и, будучи грамотно написанными, не тупят, не зависают, не поглощают память.

Как в PHP получить данные от пользователя в консоли

Благодаря передаваемым аргументам, скрипт может выполнять действия не только с прописанными в нём данными, но и с другими значениями, указанными при запуске скрипта.

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

Во время работы скрипта может потребоваться ввод новых данных, в консоли это достигается с помощью строки запроса, в которую пользователь может ввести значение и нажать Enter для передачи его скрипту. В контексте веб-сайта такой возможности — передать данные уже во время выполнения скрипта — нет. То есть консольный запуск PHP скриптов с аргументами не только проще (не нужно возиться с HTML формой), но и даже более гибкий.

В PHP для запроса пользователю используется функция readline.

Эта функция одинаково работает и на Windows и на Linux. Причём на Linux она имеет интерактивные возможности Bash, например, сохраняет историю ввода, к которой можно вернуться с помощью стрелок. На Windows эта возможность появилась начиная с PHP 7.1.

Пример консольного PHP скрипта, которые запрашивает у пользователя данные в приглашении командной строки:

Справка и опции запуска PHP скриптов в командной строке

Справка содержит опции для разнообразных вариантов запуска файлов .php в командной строке, поэтому приведу её перевод полностью.

Использование:

   php     
   php  -r   
   php   -R    
   php   -F    
   php  -S :  
   php  -- 
   php  -a

Как можно увидеть, вариантов запуска много. Если вы не совсем поняли, что имелось ввиду, не беспокойтесь. В начале мы ознакомимся со значением опций, изучим, так сказать, матчасть, а затем приступим к конкретным примерам, которые внесут окончательную ясность.

Опции:

  -a               Запустить интерактивный шелл (оболочку)
  -c | Искать файл php.ini в этой директории
  -n               Не будут использоваться конфигурационные (ini) файлы
  -d foo     Установить INI запись для значения 'bar'
  -e               Сгенерировать расширенную информацию для отладчика/профайлера
  -f         Разобрать и выполнить .
  -h               Справка
  -i               Информация о PHP
  -l               Только проверка синтаксиса (lint)
  -m               Показать скомпилированные модули
  -r 

Браузерная панель управления ws сервером

Разработаю простую систему управления и мониторинга демона. Она очень проста и состоит из нескольких файлов echowsadmin.html (панель администратора), echowsadmin.js (логика панели администратора), echowsadmin.php (логика управления ws echo сервером). Разработать эту систему оказалось на удивление просто, я потратил не более 1го часа своего времени.

Для того, чтобы любой пользователь не мог выключить демона командой OFF, я убрал этот функционал из PHP кода ws echo сервера. Соответственно, реализовав функцию выключения из системы управления демоном. Реализация не самая изящная, вместо сигналов я использую файл off_file.pid, но зато гарантированно не требуется никаких дополнительных библиотек и выключение происходит корректно. Т.к. на ws сервере цикл while повисает в моментах слушания сообщений сокета, то после создания off_file.pid нужно соединиться с ws сервером чтобы он дошел до конца цикла и проверил наличие off_file.pid, для этого делаю небольшую хитрость, имитирую подключение по сокету из echowsadmin.php и ввожу некоторую задержку чтобы всё сработало и скрипт сообщил о благополучном завершении работы. Скачайте архив разработанной системы управления, ws сервера и клиента (устаревший архив, более новый в Downloads), не забудьте указать адрес расположения файла echowsadmin.php на вашем хостинге в echowsadmin.js в строке 10, адрес echowsstart.php в socket.js и адрес ws сервера в echowsadmin.php (вернее не адрес, а порт, т.к. файл должен находиться на сервере то адрес всегда будет 127.0.0.1), куда будет пытаться подключиться наш одноклеточный мини клиент при выключенном ws echo сервере. Кнопку перезапуска ws echo сервера я делать не стал, так как понятно, что для этого нужно нажать stop, а затем start и необходимость этого действия в одной кнопке практически отсутствует. Вся эта система управления работает только под управлением *nix операционных систем, т.е. на хостинге. А вот так она выглядит.

Панель управления демоном

Очевидно, что можно много чего улучшить:

  • Улучшить представление и сделать более детальной информацию о статусе ws сервера
  • Добавить вывод в лог более подробной информации о занимаемой памяти и количества текущих соединений
  • Сделать проверку на операционную систему и разработать версию для Денвера и Windows
  • Сделать авторизацию

Но, в моём случае стояла задача сделать себе простенький инструмент мониторинга состояния демона через веб. Кстати, эту штуку слегка модифицировав можно использовать для мониторинга любого демона, а не только ws.

А что касается реализации для ОС Windows, то все места где pid можно обходить проверкой и таким образом обеспечиь запускаемость.

if (strtoupper(substr(PHP_OS,0,3)) === 'WIN') { 

}

А запущен демон или нет достаточно проверять просто наличием pid файла.

Пока я был на выходных, забыл выключить ws echo сервер, в итоге время его жизни составило 233774 секунд, т.е. где-то около 3х суток, занимаемая память так и осталась около 0.1%, что говорит о том, что решение имеет право на жизнь.

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

Установка и запуск PHP программ на локальном сервере

После окончания установки и настройки сервера, перейдите в корневую папку веб-сайтов. Этой папкой, например, может быть C:Serverdatahtdocs (такой каталог у тех, кто устанавливал по моей инструкции). В этот каталог можно скопировать файл или файлы с расширением .php. Особенностью запуска этих файлов является то, что они открываются не двойным кликом, как мы привыкли, а через браузер. Если скопированный файл называется programm.php и размещён он в корневом каталоге сайтов веб-сервера, то он будет доступен по адресу

Если в корневом каталоге мы создадим другой каталог, например school (т. е. C:Serverdatahtdocsschool), и в него поместим файл, например classes.php, то этот файл будет доступен по адресу в браузере

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

У меня скачался файл wordpress-4.1.1-ru_RU.zip. Распаковываем его. Внутри каталог wordpress, а в этом каталоге файлы:

Если мы хотим, чтобы наш блог был доступен по адресу http://localhost, то нам нужно содержимое каталог wordpress скопировать в корневой каталог сайтов, т. е. всё, что внутри wordpress переместить в C:Serverdatahtdocs.

Если на нашем сервере много сайтов (доска объявлений, форум, сайт знакомств, блог и т. д.), то нужно скопировать в отдельный каталог. Например, я создаю каталог

C:Serverdatahtdocsblog и в этот каталог копирую всё, что в папке wordpress. Получается так:

Всё готово, теперь в браузере переходим http://localhost/blog и видим:

Вроде бы, что-то и работает, но точно не так, как хотелось бы нам.

В современных популярных скриптах есть свой собственный установщик, либо нужно вручную прописать данные в файл (обычно эти файлы называются config.php и т. п.). Не будем гадать, а просто откроем файл readme.html. И сразу же находим ответ:

Т.е. в нашем случае путь до будущего блога http://localhost/blog, прибавляем к нему wp-admin/install.php, в итоге получаем адрес

Просто нажимаем «Вперёд».

В следующем окне нужно ввести имя пользователя и пароль

Обратите внимание, что это имя пользователя базы данных, а не владельца блога. Обычно, на локалхосте имя пользователя root, а пароль, если вы его не меняли, пустой.

Ещё необходимо создать базу данных. Для этого переходим в phpMyAdmin ( http://localhost/phpMyAdmin/ ). Там переходим в раздел «Базы данных». Вводим название базы и нажимаем «Создать».

Возвращаемся к нашей установке WordPress и нажимаем далее.

На этом окне просто нажимаем «Запустить установку».

Вводим название сайта, имя пользователя (блогера) его пароль — всё понятно. Нажимаем «Установить WordPress» и всё будет готово — можно пользоваться блогом.

Получение справки в командной строке

Для получения справки о функциях PHP прямо в командной строке используется опция –rf.

php --rf readline
Function  {

  - Parameters  {
    Parameter #0 
  }
}

Ну как-то так… а чего вы хотели — это же консоль.

 php --rf readfile
Function  {

  - Parameters  {
    Parameter #0 
    Parameter #1 
    Parameter #2 
  }
}

Насколько я понял, в строке Parameters в фигурных скобках пишется количество аргументов функции, строка required означает, что аргумент обязательный, а строка optional — что аргумент опциональный. О функции аргументов иногда можно догадаться по их имени, например, $filename. Информации о том, какое действие выполняет функция, видимо, нет.

Заключение

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

Скрипт на PHP может быть альтернативой скрипту на Bash, особенно если нужно использовать СУБД (MySQL, SQLite) — с которыми через Bash работать тяжело, либо для использования возможностей PHP по работе с текстом в разметке XML, JSON — что в Bash также не очень удобно.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий