Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт Хостинг

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Cron — это программное обеспечение для настройки автоматического выполнения заданий (скриптов) в Unix/Linux подобных системах: Centos, Debian, Ubuntu и других. Этот планировщик задач работает аналогично во всех версиях операционных систем.

Добавить скрипт в Cron можно через специальный файл «crontab», содержащий список заданий для выполнения.

Файл crontab

Пример пустого файла crontab

Чтобы правильно добавить задание сначала указывается время и периодичность и в конце путь к исполняемому скрипту.

  • минута (0-59);
  • час (0-23);
  • день (1-31);
  • месяц (1-12);
  • день недели (0-6);
  • путь к исполняемому файлу.

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

Настройка и запуск cron на веб-хостинге

Пример

Строка следующего вида подразумевает выполнение команды каждый день в 7 утра и 7 вечера:

0 7,19 * * * home/user1/script.sh

Запуск php-скриптов только из консоли

Подскажите, как можно сделать чтоб скрипт запускался только из консоли. Т.е. я смог бы прописать:
php /home/site/www/script.php и он выполнялся бы, а если запускать его через браузер
http://site/script.php — он не выполнялся ?

могу ошибится, но я бы смотрел «Server API»

Запуск php-скриптов только из консоли

Очень просто — нужно всего лишь поместить скрипт выше каталога www.

Ты бы обьяснил зачем тебе это нужно. Мы бы еще вариантов подкинули.

if (empty($_SERVER[REMOTE_ADDR])) {
   echo "console";
} else {
   echo "web-based";
}

magic, для того и нужно, чтоб из одной папки, доступной через http некоторые скрипты нельзя было запустить через apache.

вот копался в одной проге, нашел как там это реализовано, может кому пригодится:

unset($_SERVER['REMOTE_ADDRESS']);
include("<script>").

define("REMOTE_ADDRESS", 1);
include("<script>");

Автор оригинала: Igor2001
magic, для того и нужно, чтоб из одной папки, доступной через http некоторые скрипты нельзя было запустить через apache.

вот копался в одной проге, нашел как там это реализовано, может кому пригодится:

Иногда возникает необходимость запуска php из командной строки, и передать параметры(аргументы). Для проведения каких-то тестов или даже запуск из другого скрипта php, например из-за того, что по умолчанию время выполнения скриптов запущенных из командной строки не имеют ограничений по времени выполнения.

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

php script_name.php param1 param2 param3
<?php
print_r($_SERVER['argv']);
?>

В результате, в терминале мы увидим такой результат:

Array
(
    [0] => script_name.php
    [1] => param1
    [2] => param2
    [3] => param3
)

Где первым элементом всегда будет имя файла, а затем все переданные параметры.

Вариант вызова php из другого php файла в режиме командной строки, также с передачей аргументов. Итак у меня два файла cli.php, его содержимое:

<?php
$arr = exec("php script_name.php param1 param2 param3");
print_r($arr);
?>

Второй файл, script_name.php, его содержимое:

<?php
echo "Аргумент 1 {$_SERVER['argv'][0]} Аргумент 2 {$_SERVER['argv'][1]} Аргумент 3 {$_SERVER['argv'][2]} Аргумент 4 {$_SERVER['argv'][3]}";
?>

Вызываем первый файл cli.php командой:

php cli.php

Получаем такой результат:

Аргумент 1 script_name.php Аргумент 2 param1 Аргумент 3 param2 Аргумент 4 param3

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

Здравствуйте, вопрос то может и глупый, но мне конкретно хочется услышать от знающих людей ответ на него. есть некий скрипт написанный на php

<?php
$xhe_host ="127.0.0.1:7010";
 
require("../../Templates/xweb_human_emulator.php");
  
$path_from = "data/from_mails.txt";
$path_to = "data/to_mails.txt";
$path_res_from = "res/from_mails.txt";
$path_res_to = "res/to_mails.txt"; 
$path_messages = "data/messages/";
$str_proxy_path = "data/proxy.txt";
$useragents = file("data/useragent.txt");
$path_to_use_proxy = "res/use_proxy.txt";
$to_mails_count = 3;
 
$dbg = true;
  
require_once("tools/functions.php");
require_once("tools/accept_functions.php");
 
debug_mess(" скрипт запустили");
 
set_proxy();
if (!$i_cur_proxy)
{
    $app->quit();
}
 
$a_mails_from = file($path_from,FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$a_mails_to = file($path_to,FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
 
$str_files = $folder->get_all_items($path_messages);
$arr_files = explode("\n", $str_files);
$a = 0;
foreach($a_mails_from as $str_mail)
{
 
    $browser->navigate("http://mail.ru/");
     
    $a_mail = explode(";" ,$str_mail);
    $a_mail_lg = explode("@",$a_mail[0]);
    $input->set_value_by_name("Login",$a_mail_lg[0]);
    $listbox->select_text_by_name("Domain",$a_mail_lg[1], false);
    $input->set_value_by_name("Password",$a_mail[1]);
    $button->click_by_name("mailbox__auth__button");

   for ($k = 0; $k < $to_mails_count; $k++)
   {
      $mes_name = trim($arr_files[rand(0,count($arr_files)-1)]);
        $mes_subj = str_replace(".txt", "", $file_os->get_name($mes_name));
        $mes_content = $textfile->read_file($mes_name);
        sleep(2);
        $anchor->click_by_inner_text("Написать ");
        sleep(3);
      if ($a >= count($a_mails_to))
      { 
          debug_mess("<b>Закончились все мыла куда отправлять!</b>");
          $app->quit();
      }
         
        $textarea->set_focus_by_attribute("id","sentmsgab_compose_to",true);
        $textarea->set_value_by_name_by_form_name("To", trim($a_mails_to[0]), "Compose");
        debug_mess("отправляем с ".$a_mail[0]." на ".trim($a_mails_to[$a]));
        sleep(3);
        $input->set_focus_by_attribute("id","sentmsgab_compose_subj",true);
        $input->set_value_by_name_by_form_name("Subject", $mes_subj,"Compose");
        sleep(3);
      $ifr = get_frame_number();
     
     $body->set_inner_html_by_number(0, "", $ifr);
         
     while($body->get_inner_html_by_number(0, $ifr) == "")
     {
            if ($body->get_name_by_number(0, $ifr) == "")
         {
              $ifr = get_frame_number();
         }
            $body->set_inner_html_by_number(0,$mes_content,$ifr);
            $frame->set_body_by_number($ifr,$mes_content);
            sleep(5);
      }
      
        $anchor->click_by_inner_text("Отправить");
        sleep(5);
         
      rewrite($a_mails_to[$a], $path_to, $path_res_to);
        $a++;
   }
    $anchor->click_by_attribute("id","PH_logoutLink", true);
    sleep(3);
     
    $proxies = file_get_contents($str_proxy_path);
    $proxies = str_replace($i_cur_proxy."\r\n", "", $proxies);
    $textfile->write_file($str_proxy_path, $proxies, 60);
    $textfile->add_string_to_file($path_to_use_proxy, $i_cur_proxy."\r\n");
    $browser->stop();
    sleep(1);
    $browser->close_all_tabs(); 
    sleep(1);
    $browser->navigate("about:blank");
    sleep(1);
    $browser->disable_proxy("");
    $i_cur_proxy = "";
    sleep(5);
    set_proxy();
    if (!$i_cur_proxy)
    {
        $app->quit();
    }
     
   rewrite($str_mail,$path_from, $path_res_from);
    debug_mess("<b>Закончили отправлять письма с" . $a_mail[0] . "</b><br>");
}
 
debug_mess(" скрипт закончил работу<br>");
$app->quit();
?>

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

В данном материале мы рассмотрим такие вопросы как: настройка PHP для работы в командной строке, выполнение PHP-кода в командной строке,
запуск PHP скриптов в командной строке без аргументов и с аргументами.

«На дисерт», в последнем пункте материала, будет показан процесс установки через командную строку
менеджера зависимостей для PHP getcomposer.org.

Начиная с версии 4.3.0, PHP поддерживает новый вид SAPI (интерфейс разработки серверных приложений) под названием CLI, что означает интерфейс командной строки.
Как видно из названия, этот вид SAPI предназначен для разработки консольных (или даже десктопных) приложений на PHP.

Начиная с PHP 4.3.0 дистрибутив для Windows влючает в себя CLI-модуль php.exe, расположенный в отдельной директории cli, полное имя — cli/php.exe.
Начиная с PHP 5, CLI-модуль расположен в основной директории и называется php.exe. CGI-модуль также включен в дистрибутив под названием php-cgi.exe.
Начиная с PHP 5, в дистрибутив для Windows входит новый файл php-win.exe. Он полностью эквивалентен CLI, за исключением того,
что php-win абсолютно ничего не выводит, что приводит к отстутствию консоли (окно DOS не появляется на экране).

Настраиваем работу PHP из командной строки

Прежде всего Вы должны узнать расположение CLI-модуля, файла с именем «php.exe». В моем случае полный путь до данного файла выглядит так — «C:\php\php.exe».

Теперь нам нужно проверить работает ли PHP в командной строке. Для этого откроем командную строку (желательно от имени администратора) и выполним команду:

C:\Windows\system32>C:\php\php.exe --help

укажем полный путь до CLI-модуля, файла «php.exe» (т.е. «C:\php\php.exe»), и через пробел добавим ключ «—help».
(вызов «PHP» в консоли с ключем «—help» покажет справочную информацию).

Если после выполнения данной команды Вы получили предупреждения или сообщения об ошибках, то вероятнее всего, Вами был не верно указан путь до CLI-модуля «C:\php\php.exe».

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

Вы наверное согласитесь со мной, что каждый раз указывать путь «C:\php\php.exe» довольно-таки не приятно,
и конечно же, запуск PHP можно настроить без необходимости указывать полный путь до файла «C:\php\php.exe».
Для этого необходимо в «Переменные среды» в переменную «PATH» добавить путь до этого файла.

Давайте ради интереса, до внесения изменений в переменную «PATH», попробуем вызвать в консоли PHP:

выполняем команду с опцией «php —help»

C:\Windows\system32>php --help

В ответ Вы скорее всего получите:

C:\Windows\system32>php --help
"php" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Теперь добавим путь до CLI-модуля «php.exe» в переменную «PATH». Найти данную переменную можно выполнив ряд действий (визуально представлено на изображениях ниже):

В данной переменной уже имеются пути, которые разделены точкой с запятой (;). Вам необходимо добавить в конец переменной свой путь до CLI-модуля, файла «php.exe»,
В моем случае путь это — «C:\php\». (Будьте внимательны, при внесении изменений не удалите текущие значения).

добавим путь до CLI-модуля, файла «php.exe», в переменную «PATH»

Снова выполняем команду с ключем «php —help»

C:\Windows\system32>php --help
или
C:\Windows\system32>php -h

команда «php» с ключем «—help» покажет справочную информацию

Примеры работы PHP в командной строке

Откроем консоль (желательно от имени администратора) и перейдем к практике.

Рассмотрим два способа запуска PHP-кода:

  • Передача PHP-кода напрямую в командной строке
  • Указание конкретного файла для запуска

Первый способ. Опция «-r» (или «—run») позволяет выполнять PHP-код, указанный непосредственно в командной строке.
Открывающие и завершающие PHP-теги (<?php и ?>) не нужны.

C:\Windows\system32>php -r "printf(1);"
1
C:\Windows\system32>php -r "printf(1+2);"
3
C:\Windows\system32>php -r "printf('Hello world');"
или
C:\Windows\system32>php -r "print_r('Hello world');"
C:\Windows\system32>php -r "echo 'Hello world';"
Hello world
C:\Windows\system32>php -r "var_dump($_SERVER);"

Второй способ. Опция «-f» (или «—file») позволяет исполнять указанный файл. Является не обязательной и может отсутствовать,
достаточно просто указать имя файла.

Исполним индексный файл веб-сервера Apache с расширением «.html»

C:\Windows\system32>php -f C:\Apache24\htdocs\index.html
или
C:\Windows\system32>php C:\Apache24\htdocs\index.html
<html><body><h1>It works!</h1></body></html>

Исполним php скрипт

C:\Windows\system32>php C:\Apache24\htdocs\phpinfo.php

Передаем аргументы php скрипту в консоли

Как и любое другое консольное приложение, PHP может принимает аргументы, а PHP-скрипт также может получать аргументы.
Рассмотрим данную возможность на примере. В корневой директории управления сайтами «C:\Apache24\htdocs» создадим файл «console.php» и внесем в него строки:

<?php
// количество аргуметов переданных в консоли
echo "The number of array elements \$argv = " . $_SERVER['argc'] . "\n";
// выводим массива аргументов переданных в консоли
print_r($_SERVER['argv']);
?>

Исполним php скрипт «console.php» без передачи параметров

C:\Windows\system32>php C:\Apache24\htdocs\console.php
The number of array elements \$argv = 1
Array
(
    [0] => C:\Apache24\htdocs\console.php
)

количество аргуметов переданных в консоли равно 1,

этим аргументом является путь до файла «C:\Apache24\htdocs\console.php»

Исполним php скрипт «console.php» с передачей параметров

C:\Windows\system32>php C:\Apache24\htdocs\console.php param1 param2
The number of array elements \$argv = 3
Array
(
    [0] => C:\Apache24\htdocs\console.php
    [1] => param1
    [2] => param2
)

количество аргуметов переданных в консоли равно 3,
первым аргументом является путь до файла «C:\Apache24\htdocs\console.php»
вторым и третим — param1, param2

Установка composer

composer

Composer (getcomposer.org) — это инструмент для управления зависимостями в PHP. Он позволяет вам объявлять зависимые библиотеки для вашего проекта, устанавливать их и обновлять.

Читайте также:  Демистификация Linux: понимание операционной системы

На официальном сайте getcomposer.org есть инструкция по его установке
для «Installation — Linux / Unix / OSX»
и для «Installation — Windows».

Перед скачиванием архива «composer.phar» убедитесь, что в конфигурационном файле «C:\php\php.ini» подключено расширение «php_openssl.dll».
(Для этого раскомментируйте строку «extension=php_openssl.dll»).

C:\Windows\system32>cd C:\Apache24\htdocs
C:\Apache24\htdocs>php -r "readfile('https://getcomposer.org/installer');" | php
#!/usr/bin/env php
All setting correct for using Composer
Downloading...
Composer successfully installed to: C:\Apache24\htdocs\composer.phar
Use it: php composer.phar

создадим файл «composer.bat»

C:\Apache24\htdocs>echo @php "%~dp0composer.phar" %*>composer.bat 

после выполнения данной команды рядом с архивом «composer.phar» появится файл «composer.bat»

теперь находясь в директории где расположены файлы «composer.phar» и «composer.bat» можно выполнить следующие команды

C:\Apache24\htdocs>composer -V
Composer version 1.0-dev (xx...xx) 2015-xx-xx xx:xx:xx
C:\Apache24\htdocs>composer -h

первая команда выводит версию composer
вторая команда выводит справочную информацию

По итогам изучения данного материала мы осуществили настройку PHP для работы в командной строке, на практике рассмотрели примеры выполнения
PHP-кода и запуска PHP скриптов в командной строке. А также нами был выполнен процесс установки composer`a.

В CLI SAPI есть три различных способа запуска PHP-кода:

    Указывание конкретного файла для запуска.

    $ php my_script.php
    $ php -f my_script.php

    Оба способа (с указыванием опции -f

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

    Если вам нужно передать аргументы вашим скриптам,
    то при использовании опции -f

    первым аргументом должен быть
    .

  1. Передать PHP-код напрямую в командной строке.

    $ php -r «print_r(get_defined_constants());»

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

    Внимательно прочтите пример, в нем нет открывающих и закрывающих тегов!
    Опция -r

    просто в них не нуждается. Их использование
    приведет к ошибке парсера.

  2. Передать запускаемый PHP-код через стандартный поток ввода
    (stdin
    ).

    Это дает мощную возможность динамически создавать PHP-код и
    скармливать его запускаемому файлу, как показано в этом
    (ненастоящем) примере:

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

Как и любое другое консольное приложение, бинарный файл PHP
принимает аргументы, но ваш PHP-скрипт также может получать
аргументы. PHP не ограничивает количество аргументов,
передаваемых в ваш скрипт (оболочка консоли устанавливает
некоторый порог количества символов, которые могут быть переданы;
обычно этого лимита хватает). Переданные аргументы доступны
в глобальном массиве $argv . Первый индекс
(ноль) всегда содержит имя вызываемого скрипта из командной
строки. Учтите, что если код вызывается на лету из командной
строки с помощью опции -r

, значением
$argv будет просто дефис
(
). То же самое верно и для кода,
переданного через конвеер из STDIN
.

Вторая зарегистрированная глобальная переменная — это
$argc , содержащая количество элементов
в массиве $argv ((а не
количество аргументов,
переданных скрипту).

Если передаваемые вами аргументы не начинаются с символа

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

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

Однако, в Unix-системах есть еще один способ использования
PHP для консольных скриптов. Можно написать скрипт,
первая строка которого будет начинаться с
#!/usr/bin/php
(при необходимости подставьте
корректный путь к вашему бинарному файлу PHP CLI).
После этой строки можно поместить обычный PHP-код, заключенный
в открывающие и закрывающие теги PHP. Как только вы установите
корректные атрибуты запуска на файл (например,
chmod +x test
), ваш скрипт может быть
запущен как обычный консольный или perl-скрипт:

Пример #1 Запуск PHP-скрипта как консольного

Подразумевая что этот файл называется test
и находится в текущей директории, мы можем сделать следующее:

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

Исполняемый PHP-файл может использоваться для запуска PHP-скриптов
независимо от веб-сервера. В случае, если вы работаете в Unix-подобной системе,
вам необходимо добавить ко всем скриптам специальную первую строку
и сделать их исполняемыми, чтобы указать, какая из программ должна
обрабатывать эти скрипты. На Windows-платформах вы можете
назначить обработчик php.exe для файлов
с расширениями .php
либо создать пакетный
(.bat) файл для запуска скриптов посредством PHP.
Строка, добавляемая в начале скрипта для Unix-систем,
не влияет на их работу в ОС Windows, таким образом вы можете
создавать кроссплатформенные скрипты. Ниже приведен простой
пример скрипта, выполняемого из командной строки:

Пример #2 Скрипт, предназначенный для запуска из командной строки (script.php)

Это консольный PHP-скрипт, принимающий один аргумент.

Любое слово, которое вы хотели бы
напечатать. Опции —help, -help, -h,
или -? покажут текущую справочную информацию.

В приведенном примере мы используем специальную первую строку
для указания на то, что этот скрипт необходимо запускать при помощи
PHP. Поскольку мы работаем с CLI -версией, то
HTTP -заголовки выводиться
не будут. При написании консольных приложений на PHP вам доступны две
переменные: $argc и $argv .
Первая — количество переданных аргументов плюс один (имя выполняемого скрипта).
Вторая — массив переданных аргументов, начиная с имени скрипта с нулевым
индексом ($argv).

Также в приведенном примере мы проверяем количество переданных аргументов.
В случае, если их более или менее одного, а также в случае, если переданный
аргумент был —help

, -help

,
-h

или -?

, мы выводим
справочное сообщение, подставляя имя выполняемого скрипта
динамически. В обратном случае мы просто печатаем полученный аргумент.

Пример #3 Пакетный файл для запуска PHP-скрипта из командной строки (script.bat)

Вы также можете ознакомиться с расширением
Readline ,
которое может быть использовано для усовершенствования
консольного PHP-скрипта.

Всех приветствую. Сегодня я начинаю писать в новую рубрикуPHP
! В основном здесь будут основы и азы этого языка. И для начала я вам расскажу, как открыть php-файл в браузере?

Почему php не открывается так, как html?

Дело вот в чем: php — это серверный язык. Html и javascript — клиентские. Соответственно, для выполнения php-кода нужно запускать сервер, только в этом случае файл можно будет открыть. Собственно, тут только 2 пути:

  1. Создать на реальном хостинге сайт, на котором вы будете экспериментировать с php
  2. Создать локальный сервер, на котором вы сможете создавать бесплатно неограниченное количество сайтов у себя на компьютере и экспериментировать сколько душе угодно.

И я всячески советую вам именно второй вариант. Соответственно, перед тем, как начать открывать php файлы, нужно поставить себе такой сервер. Только не думайте, что это тяжело — справитесь буквально за пару минут. Из самых известных локальных серверов для Windows
могу выделить такие:

  1. OpenServer
  2. Denwer
  3. Xammp

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

Как открыть php файл после установки сервера?

Сервер установлен? Отлично, теперь у вас все есть для запуска php-файлов. Собственно, чтобы это делать, ваш локальный сервер должен быть запущен. Вот такой ярлычок у вас должен быть на рабочем столе:

Теперь вам нужно создать новый сайт для локального сервера. Опять же, я показываю только как это делать на денвере. Заходим в корневую папку сервера, тут находим папку home
. В ней будут все ваши сайты. Нужно создать новую папку, ее название и будет названием нового сайта. В созданной папке обязательно нужно создать папку www
, без этого ничего работать не будет. Последний этап — кидаем нужные php-файлы (которые нужно открыть) в папку www. Она является корневой для сайта.

Способ открытия php-файлов отличается от того, как открывать html. Вы не можете открыть их в браузере напрямую, в таком случае вы увидите только код. Чтобы открыть файл, нужно прописать сайт, на котором он находится, а также путь к файлу на сайте. Хочу подчеркнуть, что если ввести просто название сайта (без http:// , но со слешем), то сервер запустит index.php , если такой имеется.

Пример:

Я создал на локальном сервере папку phptest , в ней — www , а уже в нее закинул нужные файлы. Отлично, теперь нужно перезапустить денвер, если он у вас был запущен. Если нет, просто запускаем. Теперь в браузерной строке нужно набрать: phptest/
Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Так вы попадаете на главную страницу сайта. Этот файл нужно назвать index.php . Например, я создал на php калькулятор, поместил его в phptest под названием calc.php . Прописываю адрес до этого файла:Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Читайте также:  Найдите свое идеальное имя для веб-сайта в домене Baguette: доступно и просто

Отлично, открылся калькулятор. Можно тестировать приложение.
Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Как не нужно открывать php?

Это не нужно делать так, как html-файлы. То есть не через «Открыть с помощью»
«Браузер»
. Так вы увидите только исходный код файла, но ни в коем случае не результат его выполнения.Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

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

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

Как делают практически все новички:

  1. Создают PHP-файл
    (иногда HTML-файл
    , но это самые новички).
  2. Записывают туда PHP-код
    .
  3. И двойным кликом пытаются открыть его в браузере.

Результат, браузер код открывает, но исполнять его не торопится. А просто выводит какие-то куски кода обычным текстом, либо вообще ничего не выводит.

Ошибка данного подхода состоит в том, что ученик не понимает, что PHP — это серверный язык
, а не клиентский. Это HTML
или JavaScript
клиентские языки, они, конечно, обрабатываются браузером. Но для PHP нужен интерпритатор
. И вот данный интерпритатор запускается сервером.

Вывод: запускать PHP-код надо через сервер
. Если у Вас Denwer
, значит, через него.

Теперь, как запускать PHP-код через Denwer
. Большинство новичков вновь делают ошибку. Они вроде бы всё делают правильно, создают нужные папки, перезапускают Denwer
и вроде бы, осталось только правильно вызвать файл. Но тут снова ошибка: они вновь открывают файл просто в браузере (либо перетаскиванием файла в браузер, либо двойным кликом). Это легко можно заметить по адресу в адресной строке. Там будет что-то наподобие: file:///Z:\home\mysite.local\www\script.php
.

А правильно запускать надо, вводя адрес виртуального хоста
. То есть прямо в адресной строке браузера вводите: http://mysite.local/script.php
— всё, теперь скрипт запустится и выведет свой результат.

Надеюсь, данная статья поможет многим новичкам, только начинающим изучать PHP
.

От автора:
Если вы когда-нибудь запускали воздушного змея, то знаете, что это не так просто, хотя со стороны кажется наоборот. На самом деле нужно приловчиться, чтобы вовремя веревку натянуть или поймать воздушную «волну». Сегодня я расскажу, как запустить скрипт PHP и какие «веревочки» дергать, чтобы он не просто работал, а «летал»!

Особенности запуска

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

Обычный (удаленный) –предоставляется хостером.

Локальный – устанавливается на клиентской машине.

На стороне хостинга, чтобы увидеть результат работы скрипта, в строку браузера вводится адрес следующего формата: ваш_сайт.ru/имя_файла.php

На локальном сервере все обстоит иначе. Перед тем, как запустим PHP скрипт в браузере, выясним эти особенности.
В зависимости от применяемого сервера набираемый адрес может отличаться. Чаще всего в «наших» краях используются различные сборки с Apache, из которых самой распространенной является Денвер.

Запуск скрипта в Denwer

В «апачевских» сборках все скрипты запускаются в localhost. Чтобы продемонстрировать это на практике, создадим какой-нибудь интересный пример. Вот его код:

Разместите этот код в файле PHP и сохраните его на виртуальном диске, который создается после запуска локального сервера. У меня это файл test2.php.

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

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

Теперь разберемся, как запустить PHP скрипт на компьютере. Для этого в браузере следует указать адрес в формате: localhost/имя_файла.php

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Начинаем мучиться

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

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

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

В нем нужно найти раздел «Paths and Directories» и исправить путь, указанный в параметре extension_dir. Измените правые слэши на левосторонние и добавьте в начале адреса букву виртуального диска.

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Если запустить PHP скрипт из CMD консоли опять не получается, тогда следует просмотреть все пути, упоминаемые в сообщении ошибки, и исправить их.

Если все хорошо

В командной строке системе нужно указать путь, где находится «экзешник» интерпретатора языка PHP. В Денвере он находится по этому пути: Z:\usr\local\php5

Здесь же расположен и глобальный файл конфигурации.

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Запускаем командную строку Винды. Затем указываем системе путь к исполняемому файлу PHP. После чего задаем путь к нужному скрипту: Z:\usr\local\php5\php.exe Z:\home\localhost\www\test2.php

Но в итоге вы получите не совсем ожидаемый результат:

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

И все потому, что командная строка «не понимает» теги . Перед тем, как запустить PHP скрипт из командной строки, немного модифицируем код, чтобы он возвращал нам только текущее время без эффекта «часов».

There are three different ways of supplying the CLI SAPI with PHP code
to be executed:

    Tell PHP to execute a certain file.

    $ php my_script.php
    $ php -f my_script.php

    Both ways (whether using the -f

    switch or not) execute
    the file my_script.php . Note that there is no
    restriction on which files can be executed; in particular, the filename
    is not required have a .php
    extension.

    If arguments need to be passed to the script when using
    -f

    , the first argument must be
    .

  1. Pass the PHP code to execute directly on the command line.

    $ php -r «print_r(get_defined_constants());»

    Special care has to be taken with regard to shell variable substitution and
    usage of quotes.

    Read the example carefully: there are no beginning or ending tags! The
    -r

    switch simply does not need them, and using them will
    lead to a parse error.

  2. Provide the PHP code to execute via standard input
    (stdin
    ).

    This gives the powerful ability to create PHP code dynamically and feed it
    to the binary, as shown in this (fictional) example:

You cannot combine any of the three ways to execute code.

As with every shell application, the PHP binary accepts a number of
arguments; however, the PHP script can also receive further arguments. The
number of arguments that can be passed to your script is not limited by PHP
(and although the shell has a limit to the number of characters which can be
passed, this is not in general likely to be hit). The arguments passed to
the script are available in the global array $argv . The
first index (zero) always contains the name of the script as called from the
command line. Note that, if the code is executed in-line using the command
line switch -r

, the value of $argv
will be just a dash (
). The same is true if the code is
executed via a pipe from STDIN
.

5 years ago

On Linux, the shebang (#!) line is parsed by the kernel into at most two parts.
For example:

1: #!/usr/bin/php
2: #!/usr/bin/env php
3: #!/usr/bin/php -n
4: #!/usr/bin/php -ddisplay_errors=E_ALL
5: #!/usr/bin/php -n -ddisplay_errors=E_ALL

1. is the standard way to start a script. (compare «#!/bin/bash».)

2. uses «env» to find where PHP is installed: it might be elsewhere in the $PATH, such as /usr/local/bin.

3. if you don»t need to use env, you can pass ONE parameter here. For example, to ignore the system»s PHP.ini, and go with the defaults, use «-n». (See «man php».)

4. or, you can set exactly one configuration variable. I recommend this one, because display_errors actually takes effect if it is set here. Otherwise, the only place you can enable it is system-wide in php.ini. If you try to use ini_set() in your script itself, it»s too late: if your script has a parse error, it will silently die.

5. This will not (as of 2013) work on Linux. It acts as if the whole string, «-n -ddisplay_errors=E_ALL» were a single argument. But in BSD, the shebang line can take more than 2 arguments, and so it may work as intended.

Summary: use (2) for maximum portability, and (4) for maximum debugging.

2 years ago

A gotcha when using #!/usr/bin/php at the start of the file as noted above:

(In Emacs I used «CTRL-X ENTER f» then type «unix» and ENTER to convert)

Глава 24. Использование PHP из командной строки

Начиная с версии 4.3, РНР поддерживает новый SAPI-тип (Server Application Programming Interface)
под названием CLI, что означает Command Line Interface. Как следует из названия, главной
задачей этого SAPI-типа является разработка оболочки/shell (или рабочего стола) приложений с
помощью РНР. Имеются весьма небольшие отличия CLI SAPI от других SAPI, которые будут далее рассмотрены в этой главе.

Читайте также:  Удобное программное обеспечение для подключения к компьютеру: подключайтесь с легкостью

CLI SAPI был выпущен в первый раз с PHP 4.2.0, но тогда это был эксперимент, и нужно было явно включать его командой
--enable-cli при запуске ./configure. Начиная с PHP 4.3.0,
CLI SAPI больше не является экспериментальным и всегда встроен и устанавливается
как двоичный исполняемый файл php (называется php.exe в Windows).

Существенные отличия CLI SAPI от других SAPI:

  • В отличие от CGI SAPI, никакие шапки/headers не записываются в вывод.

    Хотя в CGI SAPI имеется способ подавления HTTP-шапок, эквивалентного переключателя для их
    включения в CLI SAPI нет.

  • Имеются определённые директивы php.ini,
    которые переопределены в CLI SAPI, поскольку они не имеют смысла в среде окружения оболочки:

Таблица 24-1. Переопределение php.ini-директив

Примечание: Эти директивы не могут быть инициализированы другим значением из файла
конфигурации php.ini или специального файла (если специфицирован). Это является некоторым
ограничением, поскольку эти значения по умолчанию применяются после
разбора всех файлов конфигурации. Однако их значение может быть изменено
на этапе прогона программы (что не имеет смысла для всех других директив,
например, для register_argc_argv).

  • Легче работать в среде оболочки, когда определены следующие константы:

    Таблица 24-2. Специфические CLI-константы

    Имея всё это, вы не должны, например, самостоятельно открывать поток для
    stderr, а просто используете константу вместо ресурса потока:

    php -r 'fwrite(STDERR, "stderr\n");'

    Вам не нужно явно закрывать эти потоки, это делается РНР автоматически.

  • CLI SAPI не изменяет текущую директорию на директорию исполняемого скрипта!

    Пример, показывающий отличие CGI SAPI:

    <?php
        /* Простое тестирующее приложение */
        echo getcwd(), "\n";
    ?>

    Когда используется CGI-версия, на выходе будет:

    $ pwd
    /tmp
    
    $ php-cgi -f another_directory/test.php
    /tmp/another_directory

    Это ясно показывает, что PHP изменяет свою текущую директорию на директорию исполняемого скрипта.

    Использование CLI SAPI даёт:

    $ pwd
    /tmp
    
    $ php -f another_directory/test.php
    /tmp

    Это даёт большую гибкость при написании утилит командной строки на
    PHP.

    Примечание: CGI SAPI поддерживает поведение CLI SAPI
    с помощью ключа -C при запуске из командной строки.

Список опций командной строки исполняемого файла PHP может быть получен в любое время путём
запуска PHP с ключом -h:

Usage/Использование: php [options] [-f] <file> [args...]
       php [options] -r <code> [args...]
       php [options] [-- args...]
  -s               Отображает исходный текст с разными цветами.
  -w               Отображает исходный текст без комментариев и пробелов.
  -f <file>        Разбирает <file>.
  -v               Номер версии.
  -c <path>|<file> Ищет файл php.ini в данной директории.
  -a               Запустить интерактивно.
  -d foo[=bar]     Определить INI-вхождение foo со значением 'bar'.
  -e               Генерировать расширенную информацию для отладчика/profiler'а.
  -z <file>        Загрузить <file> Zend-расширения.
  -l               Только проверить синтаксис (lint).
  -m               Показать скомпилированные модули.
  -i               PHP-информация.
  -r <code>        Запустить PHP <code> без использования тэгов скрипта <?..?>
  -h               Данный help.

  args...          Аргументы, передаваемые скрипту. Используйте -- args когда
                   первый аргумент начинается с - или скрипт читается из stdin

CLI SAPI имеет три разных способа получения PHP-кода, который нужно выполнить:

  1. Сказать PHP выполнить определённый файл.

    php my_script.php
    
    php -f my_script.php

    Оба способа (с/без использования переключателя
    -f) выполняют данный файл my_script.php. Вы можете выбрать для выполнения любой файл,
    названия ваших файлов скриптов PHP не обязаны заканчиваться расширением .php,
    а могут иметь любое имя или расширение.

  2. Передать PHP код для выполнения непосредственно из командной строки.

    php -r 'print_r(get_defined_constants());'

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

    Примечание:
    Просмотрите пример внимательно, нет начальных и конечных тэгов! Переключателю -r они просто не нужны.
    Использование их в данном случае приведёт к ошибке разборщика.

  3. Предоставить PHP-код для выполнения через стандартный ввод (stdin).

    Это позволяет динамически создавать PHP-код и передавать его экзешнику, как показано в данном (надуманном) примере:

    $ some_application | some_filter | php | sort -u >final_output.txt

Вы не можете комбинировать эти три способа при выполнении кода.

Как и в любом приложении оболочки, не только сам PHP, но и ваши скрипты PHP также принимают аргументы. Количество передаваемых в скрипт аргументов в РНР
не ограничивается (оболочка имеет ограничение на количество передаваемых символов).
Аргументы, передаваемые в ваш скрипт, доступны через глобальный массив $argv. Нулевой индекс всегда содержит имя скрипта (которое является символом
- в случае, когда PHP-код приходит со стандартного ввода или с использованием ключа командной строки
-r).
Вторая регистрируемая глобальная переменная это $argc, которая содержит количество элементов в массиве
$argvне количество аргументов, передаваемых в скрипт).

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

# Это не выполнит данный код, но продемонстрирует использование PHP
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]

# Аргумент '-h' будет передан в ваш скрипт, что предупредит показ PHP его использования
$ php -r 'var_dump($argv);' -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

Однако, вот другой способ использования PHP для скриптинга
оболочки. Вы можете написать скрипт, первая строка которого начинается с
#!/usr/bin/php, а затем идёт нормальный PHP-код, содержащийся между начальным и
конечным тэгами PHP, и соответствующим образом устанавливаются атрибуты выполнения файла. Таким
способом он может быть исполнен как нормальный скрипт оболочки или perl:

#!/usr/bin/php
<?php
    var_dump($argv);
?>

Приняв, что файл называется test и находится в текущей
директории, мы можем выполнить:

$ chmod 755 test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}

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

Таблица 24-3. Опции командной строки

Исполняемый файл PHP может быть использован для запуска PHP-скриптов абсолютно независимо от web-сервера.
Если вы работаете под Unix, вы должны добавлять специальную первую строчку
в ваши PHP-скрипты и делать их исполняемыми, чтобы система знала, какая программа должна выполнять эти скрипты.
Под Windows вы можете ассоциировать php.exe с опцией двойного щелчка по файлам
.php либо сделать batch-файл (.bat) для запуска скрипта
через PHP. Строка, добавленная в начало скрипта для работы под Unix, не
помешает под Windows, поэтому вы можете писать таким образом
межплатформенные программы. Ниже дан пример простой РНР-программы для выполнения из командной строки.

Пример 24-1. Скрипт, предназначенный для запуска из командной строки (script.php)
 

#!/usr/bin/php
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

This is a command line PHP script with one option.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> can be some word you would like
  to print out. With the --help, -help, -h,
  or -? options, you can get this help.

<?php
} else {
    echo $argv[1];
}
?>

Пример 24-2. Пакетный/Batch-файл для запуска PHP-скрипта в командной строке (script.bat)
 

@c:\php\php.exe script.php %1 %2 %3 %4

См. также в документации по расширению
Readline о функциях, которые можно использовать для усовершенствования вашего
РНР-приложения для командной строки.

Запуск php-скрипта из консоли Windows и как запустить php-файл в браузере. Поймай попутный ветер или как запустить PHP-скрипт

Настройка Cron в ISPmanager

Настроить Cron на хостинге проще всего через панель управления. Для примера разберем как производится настройка планировщика в ISPmanager 4.

  1. Открываем панель управления ISPmanager и переходим в «Планировщик» в разделе «Главное». Далее создаем новое задание, нажимая на кнопку «Создать».
    Настройка Cron в ISPmanager
  2. Заполняем поля в открывшемся редакторе и нажимаем «ОK»:
  • Команда — здесь указываем полный путь (директорию) к исполняемому файлу программы или готовому рабочему скрипту.
  • Описание — по желанию можно добавить краткое описание выполняемого задания.
  • Расписание — добавляем расписание с возможностью выбора режима. Режим «Базовый» —  с выбором доступных вариантов и «Экспертный» — самостоятельная настройка.

Настройка Cron в ISPmanager

  1. Eсли есть возможность, нужно настроить получение отчетов по запуску заданий на почтовый адрес пользователя. Для этого открываем «Планировщик» → «Настройки» → «Адрес e-mail» и указываем адрес почты для получения. После чего нужно убедиться, что в настройках не стоит галочка напротив «Не отправлять отчет по e-mail».

Настройка Cron в ISPmanager

Настройка Cron для запуска PHP-скрипта

В некоторых случаях бывает так, что автоматическое выполнение PHP-скрипта невозможно. Чаще всего подобные ошибки случаются при запуске PHP-скрипта через локальный интерпретатор. В таких случаях требуется запустить Cron вручную, для чего лучше всего использовать программу wget. В приведенном ниже примере «example.com» нужно заменить на реальный путь к вашему PHP-файлу.

0 7,19 * * * /usr/bin/wget -O - -q -t 1 ‘http://example.com/file.php’

Полезные примеры

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

0 7,19 3* 7 /usr/bin/wget -O - -q -t 1/ / ‘http://example.com/file.php’ /dev/null/2>&1

Запуск PHP-скрипта будет происходить в 7:00 и 19:00 каждого воскресенья и 3 числа каждого месяца (совпадения дня недели и числа не имеют значения).

 — эта команда Cron добавляется в конце сценария (строки), для выполнения скрипта в фоновом режиме без уведомлений.

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

То есть, если мы хотим настроить вывод результатов запуска задания Cron в определенный файл, можно изменить команду следующим образом:

0 7,19 3* 7 /usr/bin/wget -O - -q -t 1 ‘http://example.com/file.php’ > /yourdirectory/log.txt

Просмотрев такой лог, можно понять причину, почему  Cron не выполняет скрипт.

Оцените статью
Хостинги