Запуск php скрипта: Как запустить php скрипт? — Хабр Q&A
Как запустить скрипт PHP – особенности воздухоплавания
От автора: Если вы когда-нибудь запускали воздушного змея, то знаете, что это не так просто, хотя со стороны кажется наоборот. На самом деле нужно приловчиться, чтобы вовремя веревку натянуть или поймать воздушную «волну». Сегодня я расскажу, как запустить скрипт PHP и какие «веревочки» дергать, чтобы он не просто работал, а «летал»!
Особенности запуска
Как уже не раз упоминалось, PHP – это серверный язык программирования, поэтому сделать так, чтобы результат работы его кода отобразился в браузере, будет немного сложнее. Для этого файл должен располагаться непосредственно на серверном пространстве. Для работы с PHP используются два типа сервера:
Обычный (удаленный) –предоставляется хостером.
Локальный – устанавливается на клиентской машине.
На стороне хостинга, чтобы увидеть результат работы скрипта, в строку браузера вводится адрес следующего формата: ваш_сайт.ru/имя_файла.php
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
На локальном сервере все обстоит иначе. Перед тем, как запустим PHP скрипт в браузере, выясним эти особенности.
В зависимости от применяемого сервера набираемый адрес может отличаться. Чаще всего в «наших» краях используются различные сборки с Apache, из которых самой распространенной является Денвер.
Запуск скрипта в Denwer
В «апачевских» сборках все скрипты запускаются в localhost. Чтобы продемонстрировать это на практике, создадим какой-нибудь интересный пример. Вот его код:
<html>
<head>
<meta http-equiv=»refresh» content=»1″>
</head>
<body>
<time><?=date(«H:i:s»)?></time>
</body>
</html>
<html> <head> <meta http-equiv=»refresh» content=»1″> </head> <body> <time><?=date(«H:i:s»)?></time> </body> </html> |
Разместите этот код в файле PHP и сохраните его на виртуальном диске, который создается после запуска локального сервера. У меня это файл test2.php.
Вверху на снимке обозначен путь, где нужно размещать созданный файл. У вас этот путь может немного отличаться, если при инсталляции Денвера задали другое имя виртуального диска.
Теперь разберемся, как запустить PHP скрипт на компьютере. Для этого в браузере следует указать адрес в формате: localhost/имя_файла.php
Начинаем мучиться
Может, слишком и унылое название для раздела, но я немного намучился, пока получилось открыть файл PHP через командную строку. При попытке запуска система ПК выдавала вот такого рода ошибки:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Это странно, поскольку упоминаемые библиотеки у меня присутствовали в папке ext. Оказывается, что все дело в неправильно прописанных путях в конфигурационном файле php.ini.
В нем нужно найти раздел «Paths and Directories» и исправить путь, указанный в параметре extension_dir. Измените правые слэши на левосторонние и добавьте в начале адреса букву виртуального диска.
Если запустить PHP скрипт из CMD консоли опять не получается, тогда следует просмотреть все пути, упоминаемые в сообщении ошибки, и исправить их.
Если все хорошо
В командной строке системе нужно указать путь, где находится «экзешник» интерпретатора языка PHP. В Денвере он находится по этому пути: Z:\usr\local\php5
Здесь же расположен и глобальный файл конфигурации.
Запускаем командную строку Винды. Затем указываем системе путь к исполняемому файлу PHP. После чего задаем путь к нужному скрипту: Z:\usr\local\php5\php.exe Z:\home\localhost\www\test2.php
Но в итоге вы получите не совсем ожидаемый результат:
И все потому, что командная строка «не понимает» теги HTML. Перед тем, как запустить PHP скрипт из командной строки, немного модифицируем код, чтобы он возвращал нам только текущее время без эффекта «часов».
<?php
echo date(«H:i:s»)
?>
<?php echo date(«H:i:s») ?> |
Как видите, наш «программный» змей поднялся довольно высоко. И все потому, что мы выбрали правильный «воздушный» поток и вовремя «дергали» за канат. На этом наше «воздухоплавание» подошло к концу. До следующего «попутного ветра» .
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Смотреть
Как запускать PHP-код
Вы здесь:
Главная — PHP — PHP Основы — Как запускать PHP-код
Данную статью я решил посветить всем начинающим изучать PHP, потому что у всех возникает одна и та же ошибка. Почему её допускают, не знаю, но допускают постоянно. Я без преувеличений скажу, что получил уже около сотни вопросов, на которые ответ будет дан в этой статье. Эта ошибка связана с неправильным запуском в PHP.
Как делают практически все новички:
- Создают PHP-файл (иногда HTML-файл, но это самые новички).
- Записывают туда PHP-код.
- И двойным кликом пытаются открыть его в браузере.
Результат, браузер код открывает, но исполнять его не торопится. А просто выводит какие-то куски кода обычным текстом, либо вообще ничего не выводит.
Ошибка данного подхода состоит в том, что ученик не понимает, что PHP — это серверный язык, а не клиентский. Это HTML или JavaScript клиентские языки, они, конечно, обрабатываются браузером. Но для PHP нужен интерпритатор. И вот данный интерпритатор запускается сервером.
Вывод: запускать PHP-код надо через сервер. Если у Вас Denwer, значит, через него.
Теперь, как запускать PHP-код через Denwer. Большинство новичков вновь делают ошибку. Они вроде бы всё делают правильно, создают нужные папки, перезапускают Denwer и вроде бы, осталось только правильно вызвать файл. Но тут снова ошибка: они вновь открывают файл просто в браузере (либо перетаскиванием файла в браузер, либо двойным кликом). Это легко можно заметить по адресу в адресной строке. Там будет что-то наподобие: file:///Z:\home\mysite.local\www\script.php.
А правильно запускать надо, вводя адрес виртуального хоста. То есть прямо в адресной строке браузера вводите: http://mysite.local/script.php — всё, теперь скрипт запустится и выведет свой результат.
Надеюсь, данная статья поможет многим новичкам, только начинающим изучать PHP.
Полный курс по PHP и MySQL: http://srs.myrusakov.ru/php
-
Создано 05.03.2012 16:29:04 -
Михаил Русаков
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Запуск PHP скрипта из консоли Windows
В *nix подобных системах сделать это достаточно просто:
php -f /path/to/script.php
| php -f /path/to/script.php |
Но под windows это может оказаться немного сложнее, даже прописав абсолютные пути к php.exe и самому скрипту. На примере, когда установлен пак Denwer..
- Создадим bat файл для запуска РНР со следующим содержимым:
set PHPINI_PATH=C:/Webservers/usr/bin/
set PHP_COMMAND=C:/Webservers/usr/bin/php5.exe
%PHP_COMMAND% -d html_errors=off -c %PHPINI_PATH% %1 %2 %3 %4 %5 %6 %7 %8 %9
set PHPINI_PATH=C:/Webservers/usr/bin/
set PHP_COMMAND=C:/Webservers/usr/bin/php5.exe
%PHP_COMMAND% -d html_errors=off -c %PHPINI_PATH% %1 %2 %3 %4 %5 %6 %7 %8 %9
- В директорию C:\WebServers\usr\bin скопировать файл конфига php.ini и заменить в нем путь extension_dir с относительного на абсолютный
extension_dir = «C:/Webservers/usr/local/php5/ext/»
extension_dir = «C:/Webservers/usr/local/php5/ext/»
вместо extension_dir = “/usr/local/php5/ext”
Вот и всё. Теперь можно запускать php скрипты с консоли при помощи команды
C:\>php.bat C:\Webservers\home\somehost.dev\some-script.php
| C:\>php.bat C:\Webservers\home\somehost.dev\some-script.php |
При этом Apache запускать не обязательно (но на денвере MySQL сервер запускается вместе с апачем, так что если нужно – запустить отдельно).
В случае возникновения ошибки, связанной с какой-нибудь библиотекой, например, php_xdebug-2.2.0-5.3-vc9.dll, найти в конфиге и также исправить на абсолютный путь
zend_extension=»C:/Webservers/usr/local/php5/ext/php_xdebug-2.2.0-5.3-vc9.dll»
| zend_extension=»C:/Webservers/usr/local/php5/ext/php_xdebug-2.2.0-5.3-vc9.dll» |
вместо zend_extension=”\usr\local\php5\ext\php_xdebug-2.2.0-5.3-vc9.dll”
Передача параметров в скрипт
Если в скрипт нужно передать дополнительные параметры (например, значение переменной окружения, от которой зависит конфиг, используемый в скрипте) нужно указать их при вызове сразу после скрипта через пробел:
C:\>php.bat C:\Webservers\home\somehost.dev\some-script.php param1 param2
| C:\>php.bat C:\Webservers\home\somehost.dev\some-script.php param1 param2 |
И в самом скрипте для доступа к этим параметрам:
$arg1 = $argv[1];
$arg2 = $argv[2];
| $arg1 = $argv[1]; $arg2 = $argv[2]; |
$argv[0] это есть сам скрипт (C:\Webservers\home\somehost.dev\some-script.php)
Valerij Usachov
Правильный запуск PHP-скриптов в бекграунде / СоХабр
| сохранено
Переодически при разработке различных проектов перед нашей командой встает задача запуска PHP-скрипта в бекграунде для выполнения каких-либо тривиальных действий, будь то какое-то длительное импортирование изображений или простой граббинг чего-либо с переодическим оповещением о статусе процесса. И каждый раз после пробного выполнения команды вроде «$ php -q script.php > script.log &» мы получаем то, что скрипт перестает выполняться сразу же после запуска: «[1]+ Stopped php -q script.php > script.log».
Причиной тому является определенное поведение PHP-интерпретатора когда он теряет связь с запустившим его клиентом, а в данном случае — с вводом командной строки.
Если изучить PHP-документацию по работе с соединениями, то оттуда можно узнать что таким поведением можно управлять при помощи директивы конфигурации или же функции вызываемой непосредственно в самом PHP-скрипте — ignore_user_abort. Таким образом, по идее, остановка выполнения PHP-скрипта после отсоединения клиента не должна происходить если включить игнорирование отсоединения клиента, но мы, к сожалению, не смогли добиться нужного поведения при использовании этой директивы или функции и PHP-скрипты запускаемые в бекграунде продолжали «умирать» сразу же после запуска.
Сейчас уже эта проблема конечно же не вызывает ни ступора, ни поисков нужной информации, но в свое время «съела» пару часов на поиск нужного решения и проверку/отладку найденных способов, поэтому я хочу во-первых поделиться со всеми читателями данным трюком, а во-вторых, написав этот пост, освежить и закрепить в памяти простой способ решения проблемы запуска PHP-скриптов в бекграунде, чтобы они выполнялись до конца 😉
Итак, решение очень простое — нужно дать PHP-скрипту то, что ему нужно — поток ввода, который он будет считать клиентом и не будет завершать свою работу:
$ php -q script.php < /dev/null > script.log &
UPD: А так же, как верно подсказывают в комментариях, можно воспользоваться утилитой nohup, которая при правильном оперировании перенаправлением потоков стандартного вывода и вывода ошибок, позволяет добиться тех же результатов, но такой способ не работал при тестировании его например на Mac OS:
$ nohup php -q script.php > script.log 2>&1 &
После запуска подобной команды PHP-скрипт не «умрет» сразу же после запуска, а продолжит запланированную работу до тех пор пока ее не выполнит!
Надеюсь что этот небольшой хинт поможет кому-то сэкономить пару часов! 😉
Запуск php-скрипта с файлом .bat PHP Lang
Мне нужно запускать php-скрипт в полночь каждую ночь на моем сервере. В linux-системе я создал работу cron, но я застрял в системе Windows.
Я знаю, что мне нужно настроить задачу, используя планировщик задач Windows, и что задача должна будет запускать файл .bat, который, в свою очередь, запустит php-файл, но я застрял, пытаясь записать файл .bat.
Но когда я пытаюсь вручную запустить .bat-файл, чтобы проверить его, я получаю предупреждение о Windows
Команда START
дополнительно принимает заголовок для созданного окна в качестве первого аргумента; в этом случае он считает, что C:\Program Files (x86)\PHP\v5.3\php.exe
– это заголовок для отображения, а -f
(второй аргумент) – исполняемый файл, который вы хотите запустить.
Поэтому вы можете исправить это, указав заголовок заполнителя, например
start "email reminder task" "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php
Или, желательно, вы можете полностью отключить команду START
(вы не используете какие-либо уникальные возможности) и просто запустите PHP напрямую:
"C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php
На самом деле вам даже не нужен пакетный файл. Вы можете запустить php-скрипт из планировщика задач.
Просто позвольте планировщику задач запустить php.exe и установить расположение php-файла в качестве аргумента задачи.
Могу ли я предложить небольшое изменение.
echo off REM This adds the folder containing php.exe to the path PATH=%PATH%;C:\Program Files (x86)\PHP\v5.3 REM Change Directory to the folder containing your script CD C:\inetpub\wwwroot\sitename\crons REM Execute php reminder-email.php
PS. Помещение Apache, MySQL или PHP в Program Files
– плохая идея. Не используйте в своих именах папки Windows с пробелами.
К сожалению, это заняло около 10 часов, чтобы понять. Некоторые протоколы, такие как WinRM и PSEXEC, должны передавать зарегистрированную учетную запись пользователя независимо от предоставленных учетных данных (это или PHP переопределяет все, что вы вводите). Во всяком случае, чтобы получить PSEXEC, WinRM или просто отпустить пакетные файлы, которые подключаются к удаленным компьютерам, вам нужно будет изменить запуск IIS как учетной записи пользователю с правами на эти ресурсы (учетную запись службы). Я понимаю, что это огромная дыра в безопасности, но это по дизайну. PHP является безопасным, так что его нельзя легко взломать, вы должны переопределить свою безопасность, указав прогон как учетную запись. Не то же самое, что и ваша учетная запись пула приложений, хотя ваши учетные данные IIS могут использовать вашу учетную запись пула приложений.
Попробуйте таких парней!
cd E: \ xampp \ htdocs \ my-project E: Расписание php artisan: запустить
Отладка сценария командной строки PHP — Справка
Приложения PHP не всегда являются веб-приложениями. Различные инструменты командной строки, демоны, приложения для обработки очереди сообщений и другие типы приложений обычно запускаются в интерфейсе командной строки PHP. Есть несколько способов запустить сеанс отладки PHP CLI. Вы можете запустить его из PhpStorm и заставить его запускать скрипт и присоединять к нему отладчик. В качестве альтернативы вы можете позволить PhpStorm прослушивать входящие соединения отладчика и запускать скрипт вне IDE.Мы рассмотрим оба варианта.
Перед тем, как начать отладку, убедитесь, что у вас правильно установлен и настроен модуль отладки. PhpStorm поддерживает отладку с помощью двух самых популярных инструментов: Xdebug и Zend Debugger. Эти инструменты нельзя использовать одновременно, потому что они блокируют друг друга. Чтобы избежать этой проблемы, вам необходимо обновить соответствующие разделы в файле php.ini, как описано в разделах «Настройка Xdebug» и «Настройка Zend Debugger».
Откройте активный файл php.ini в редакторе:
В диалоговом окне «Настройки / Предпочтения» Ctrl + Alt + S щелкните PHP в разделе «Языки и рамки».
На открывшейся странице PHP щелкните рядом с полем интерпретатора интерфейса командной строки.
В открывшемся диалоговом окне «Интерпретаторы интерфейса командной строки» в поле «Файл конфигурации», доступном только для чтения, отображается путь к активному файлу php.ini. Щелкните Открыть в редакторе.
Запустить сеанс отладки из PhpStorm
Чтобы начать отладку сценария командной строки PHP из PhpStorm, выполните следующие шаги.
Создание конфигурации запуска / отладки
PhpStorm использует конфигурации запуска / отладки для выполнения сценария из среды IDE.Конфигурация может определять дополнительные аргументы для интерпретатора PHP, а также запускать другие команды перед запуском нашего скрипта. Нам понадобится конфигурация Run / Debug, чтобы запустить отладчик из PhpStorm.
Создать конфигурацию запуска / отладки для сценария PHP вручную
Создайте новую конфигурацию запуска / отладки с помощью меню.
Добавьте новую конфигурацию типа PHP Script и укажите необходимые параметры, такие как сценарий, который нужно выполнить.
Сохраните созданную конфигурацию Run / Debug.
Создание конфигурации запуска / отладки для сценария PHP
Щелкните правой кнопкой мыши в окне инструмента «Проект» и выберите его из контекстного меню (обязательно выберите элемент, отмеченный значком). Или откройте сценарий в редакторе, нажмите Alt + Shift + F9 и выберите сценарий для отладки.
Среда IDE запустит сценарий с включенным отладчиком и откроет окно инструмента отладки.
Запуск отладчика
Перед запуском отладчика убедитесь, что либо установлена точка останова, либо включен параметр «Прерывание на первой строке в сценариях PHP» на странице «Отладка» диалогового окна «Параметры / настройки» Ctrl + Alt + S .
Переключение между настроенными интерпретаторами PHP на лету
Нажмите Ctrl + Shift + A и начните вводить
Изменить интерпретатор PHP
. В списке предложений выберите действие Изменить интерпретатор PHP.При необходимости вы можете назначить сочетание клавиш для этого действия либо непосредственно в списке предложений, нажав Alt + Enter , либо позже, как описано в разделе «Настройка сочетаний клавиш».
В открывшемся всплывающем меню выберите один из настроенных локальных или удаленных интерпретаторов PHP.
Выбранный интерпретатор будет установлен в качестве интерпретатора проекта по умолчанию на странице PHP диалогового окна «Настройки / Предпочтения» Ctrl + Alt + S . Это также повлияет на конфигурации запуска / отладки, среды тестирования и конфигурации инструментов качества, которые настроены на использование интерпретатора проекта по умолчанию.
Запуск сеанса отладки из командной строки
Перед тем, как запускать сеанс отладки с PhpStorm при запуске сценариев CLI, убедитесь, что выполнено любое из следующих требований:
Прослушивание входящих соединений отладчика
В PhpStorm включите прослушивание к входящим отладочным соединениям, щелкнув на панели инструментов или выбрав. Это гарантирует, что PhpStorm отреагирует при запуске сеанса отладки и автоматически откроет окно инструмента отладки.Перед запуском сценария убедитесь, что либо установлена точка останова, либо включена опция «Прервать первую строку в сценариях PHP» на странице «Отладка» диалогового окна «Настройки / Предпочтения» Ctrl + Alt + S .
Запустить сценарий с параметрами отладчика
Поскольку мы будем запускать сценарий из командной строки, мы должны убедиться, что он запускается с необходимыми настройками, чтобы включить отладчик.
Запуск сценария с помощью Xdebug
Xdebug имеет различные параметры конфигурации, которые мы можем использовать, чтобы позволить интерпретатору PHP обращаться к PhpStorm.Эти параметры необходимо передать интерпретатору PHP с помощью параметра командной строки -d
. В качестве альтернативы вы можете установить переменную среды, чтобы вам не приходилось каждый раз указывать параметры -d
.
Запустить сценарий с отладкой с помощью переключателей командной строки PHP
Запустить PHP со следующими параметрами командной строки:
php -dxdebug.remote_enable = 1 -dxdebug.remote_mode = req -dxdebug.remote_port = 9000 -dxdebug.remote_host = 127.0.0.1 -dxdebug.remote_connect_back = 0 путь / к / script.php
Вы можете использовать 10.0.2.2 вместо 127.0.0.1 с Vagrant (см. Соответствующий вопрос SO).
Запустить сценарий с отладкой с использованием переменной среды
Задайте переменную среды, которая настраивает Xdebug:
установить XDEBUG_CONFIG = remote_enable = 1 remote_mode = req remote_port = 9000 remote_host = 127.0.0.1 remote_connect_back = 0
экспорт XDEBUG_CONFIG = «remote_enable = 1 remote_mode = req remote_port = 9000 remote_host = 127.0.0.1 remote_connect_back = 0»
Обычный запуск сценария:
php path / to / script.php
При желании мы можем использовать параметр Xdebug remote_autostart, чтобы всегда запускать сеанс отладки для каждого запускаемого сценария.
Запуск сценария с помощью Zend Debugger
Zend Debugger имеет различные параметры конфигурации, которые мы можем использовать, чтобы позволить интерпретатору PHP обращаться к PhpStorm. Эти параметры необходимо передать интерпретатору PHP с помощью переменной среды.
Запустить сценарий с отладкой
Установить переменную среды
QUERY_STRING
:установите QUERY_STRING = start_debug = 1 & debug_host = 127.0.0.1 & no_remote = 1 & debug_port = 10137 & debug_stop = 1
export QUERY_STRING = «start_debug = 1 & debug_host = 127.0.0.1 & no_remote = 1 & debug_port = 10137 & debug_stop = 1»
Запустите скрипт в обычном режиме:
php path / to / script.php
Необязательно, чтобы сообщить PhpStorm, какая конфигурация сопоставления пути должна использоваться для соединения с определенной машины, значение PHP_IDE_CONFIG
переменная среды должна быть установлена в serverName = SomeName
, где SomeName
— это имя сервера, настроенного в диалоговом окне «Настройки / Предпочтения» Ctrl + Alt + S .
установить PHP_IDE_CONFIG = serverName = SomeName
экспорт PHP_IDE_CONFIG = «serverName = SomeName»
Если эта переменная среды не задана, вам будет предложено указать сопоставления путей вручную, как только IDE обнаружит входящее соединение Xdebug.
Отладка
После запуска скрипта PhpStorm откроет окно инструмента отладки и прервется на первой точке останова, которая была установлена в скрипте.Теперь вы можете продолжить отладку сценария PHP CLI, как описано в разделе «Исследование приостановленной программы».
Если отлаживаемый сценарий не является частью проекта, открытого в PhpStorm, среда IDE все равно откроет сценарий в редакторе и приостановит выполнение на первом операторе. Это позволяет быстро отлаживать любой сценарий PHP CLI, даже если у нас еще нет для него проекта PhpStorm.
Последнее изменение: 19 августа 2020 г.
.
Запустить файл php из php как фоновый процесс без exec ()
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.