Перейти к содержимому

Как запустить php скрипт через консоль

  • автор:

Как запустить php скрипт через консоль

Здравствуйте, уважаемые знатоки могучего PHP.
Делаю интернет-магазин на OpenCart. В PHP я пока совсем не разбираюсь, однако столкнулся с необходимостью запуска скрипта через консоль.
Проблема в том, что в сети просто ничтожное количество информации об этом, а именно, о том, как запустить скрипт через консоль, что такое «консоль» и что вообще нужно делать.
Работаю на Денвере.

Задача: запустить PHP-скрипт через консоль. Цитата из инструкции:

Цитата:
Запускаем его командой $ php modbuild.php.

Так вот. Запускаю я Z:\usr\bin\php5.exe. Пишу Z:\home\site\www\console$ php modbuild.php
Результата — ноль.

Объясните, пожалуйста, что я делаю не так?

2. Muxa — 04 Января, 2013 — 13:41:44 — перейти к сообщению

modbuild.php — а он есть в этой папке (Z:\home\site\www\console), точно?
(Добавление)
Вы добавляли php.exe в переменную окружения?
там просто написано для nix, а не винды.. Попробуйте так

CODE (htmlphp):
скопировать код в буфер обмена
cd Z : \home\site\www\console
$ php modbuild . php
3. DelphinPRO — 04 Января, 2013 — 13:59:40 — перейти к сообщению

консоль — это командная строка.
в windows нажмите клавиши win+R
введите команду cmd
в черном окошке напишите

CODE (text):
скопировать код в буфер обмена
Z:\путь\к\файлу\php.exe Z:\путь\к\скрипту\modbuild.php

возможно сначала потребуется перейти в каталог со скриптом:

Как в битриксе запустить php скрипт через SSH (PuTTY)?

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

Если скрипт запускать в Google Chrome то всё работает корректно, элементы в инфоблок добавляются.
Но мне этих элементов очень много надо добавить, потому решил запускать скрипт через консоль, но там он почему то не работает.

Сообщений: 1224 Баллов: 212 Регистрация: 01.07.2009
14.07.2021 18:28:18

возможно в коде еще что-то не указано(подключение модуля или еще что-то), вот через консоль и не отрабатывает корректно.
можно в начало файла добавить что у вас выполняется php и нужно его использовать, например
#!/usr/bin/php

как вариант можно через консоль не через php запускать, а через wget, но лучше найти ошибку в вашем скрипте

Постоянный посетитель
Сообщений: 297 Баллов: 25 Регистрация: 18.10.2016
14.07.2021 21:53:52

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

В скрипте ошибок нет. В Google Chrome он работает корректно.

Постоянный посетитель
Сообщений: 62 Баллов: 10 Регистрация: 13.11.2012
15.07.2021 00:52:59

Запуск скрипта через php-cli отличается от запуска через веб-сервер. Например в cli режиме массив $_SERVER отличается от того, что есть при запуске через веб-сервер, банально отсутствует $_SERVER[‘DOCUMENT_ROOT’] и $_SERVER[‘SERVER_NAME’], также там нет кук и соответственно рабочих сессий

Постоянный посетитель
Сообщений: 297 Баллов: 25 Регистрация: 18.10.2016
15.07.2021 12:58:19
вот такая ошибка в консоли появляется

call_user_func_array(): Argument #1 ($function) must be a valid callback, non-static method CSiteCorporate::ShowPanel () cannot be called statically (0)

Постоянный посетитель
Сообщений: 62 Баллов: 10 Регистрация: 13.11.2012
15.07.2021 15:12:33
Проверьте версию php, с которой работаете в консоли
Сообщений: 407 Баллов: 61 Регистрация: 08.10.2014
16.07.2021 14:29:10

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

И проверьте в консоли, какие версии php у вас доступны для запуска, возможно у вас просто команда php не настроена и запускает какую-то старую версию. Выполните «whereis php»

Тогда для конкретного примера, что я привёл (у вас пути будут другие) запуск вашего файла выглядел бы так:

/opt/php72/bin/php /home/hj7756/tsdvdsika.ru/www/wordsng-sdvds-sdc/imeived.php

Постоянный посетитель
Сообщений: 297 Баллов: 25 Регистрация: 18.10.2016
16.07.2021 15:35:58

И проверьте в консоли, какие версии php у вас доступны для запуска, возможно у вас просто команда php не настроена и запускает какую-то старую версию. Выполните «whereis php»

Тогда для конкретного примера, что я привёл (у вас пути будут другие) запуск вашего файла выглядел бы так:

/opt/php72/bin/php /home/hj7756/tsdvdsika.ru/www/wordsng-sdvds-sdc/imeived.php

Написал вот такой запуск

/usr/bin/php7.3 /home/hj7756/tsdvdsika.ru/www/wordsng-sdvds-sdc/imeived.php

Теперь скрипт запускается, ошибки не выпадают.

Но он почему то не записывает инфоблоки.

*То есть скрипт выполняется:
1. Удаляет все существующие элементы инфоблока
2. Записывает новые элементы инфоблока — тут он их не записывает

при этом ошибок ни каких не показывает.

$el = new CIBlockElement; $PROP = array(); foreach ($xml as $key => $value) < $NAME = $value->name; $URLProp = $value->url; $PREVIEW_TEXT = $value->description; $PROP[$PropID] = $URLProp; // свойству с кодом 12 присваиваем значение "Белый" $arLoadProductArray = Array( "MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем "IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела "IBLOCK_ID" => $IBLOCK_ID, "PROPERTY_VALUES"=> $PROP, "NAME" => $NAME, "ACTIVE" => "Y", // активен "PREVIEW_TEXT" => $PREVIEW_TEXT, "DETAIL_TEXT" => $PREVIEW_TEXT ); if($PRODUCT_ID = $el->Add($arLoadProductArray)) < echo $PRODUCT_ID . " "; >else echo "Error: ".$el->LAST_ERROR; >

php-fpm не работает php скрипт из консоли

Нужно запускать скрипт по крону. На сервере связка nginx / php-fpm. Из того что выдавал гугл перепробовал несколько способов, и не один из них не срабатывает. Даже при попытке запустить скрипт из консоли

/home/www/name/ && /usr/sbin/php5-fpm file.php

Выдает следующие..

Usage: -R, allow-to-run-as-root
Allow pool to run as root (disabled by default)
[-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p ] [-g ] [-c ] [-d foo[=bar]] [-y ]
-c | Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value ‘bar’
-e Generate extended information for debugger/profiler
-h This help
-i PHP information
-m Show compiled in modules
-v Version number
-p, —prefix
Specify alternative prefix path to FastCGI process manager (default: php5-fpm).
-g, —pid
Specify the PID file location.
-y, —fpm-config
Specify alternative path to FastCGI process manager config file.
-t, —test Test FPM configuration and exit

  • Динамические страницы — как заставить поисковые системы их проиндексировать?
  • Google: Как удалить email-адреса из поисковой выдачи
  • Безопасный Поиск Яндекса о вредоносном редиректоре на osa.pl

Персональный блог Толика Панкова

Стихи, рассказы, философия, IT, политика, панкизм, раздолбайство и болтовня.

Находясь под воздействием тяжелых наркотиков, телеведущий Аркадий Мамонтов продемонстрировал журналистам визитку плящущего в голом виде на Красной площади Жерара Депардье

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

Posted on 18.07.2018 by Tolik Punkoff

Ворчальная преамбула

Дальше будет банальщина, наверняка всем известная, но все же, вдруг кто не знает, да и себе от склероза.

Есть у меня маленький, но очень полезный горшочек скрипт, за которым надо постоянно ходить на сервер, а тут оказалось, что он понадобился на машине, где никаких интернетов нет, а данные, которые нужно обработать — есть. Я сначала решил сделать из него экзешник, но потом оставил эту затею, ибо с компиляторами PHP под Виндовоз неожиданно образовался какой-то жуткий геморрой. HipHop от Facebook напрочь отказался собираться, сайт Roadsend PHP Compiler сдох, а опять собирать с исходников GitHub стало после шаманства с HipHop откровенно влом, ну плюс MinGW особым удобством не отличается.

Заметил, кстати, удивительную странность — на машине с 12 Гб оперативной памяти и четвероядерным процессором, но под MinGW и, соответственно, Виндой, сборка происходит медленнее, чем на компьютере с Linux, скромным двухведерным процессором и двумя же Гб ОП.

Впрочем, все эти танцы с бубном были совершенно лишними.

Запуск скрипта в консоли

Все оказалось банально и элементарно, php прекрасно работает из консоли. Формат команды:

php.exe [параметры] [параметры_скрипта]

Параметры скрипта

Скрипт может «найти» свои параметры в элементах глобального массива $_SERVER :
$_SERVER[‘argc’] хранит количество параметров
$_SERVER[‘argv’] их значения. $_SERVER[‘argv’] сам является индексированным массивом. В элементе 0 содержится имя файла скрипта.

Примечание:
Начиная с PHP 4.3.0, при использовании CLI SAPI переменные $argc и and $argv зарегистрированы и заполнены соответствующими значениями. В более ранних версиях создание этих переменных, так же, как и для CGI или модуля веб-сервера, требует значение on директивы register_globals. Независимо от версии PHP или статуса опции register_global они всегда доступны как элементы массива $_SERVER или $HTTP_SERVER_VARS. Например: $_SERVER[‘argv’]

Скрипт, выводящий в консоль свои параметры:

Результат работы

Если запустить скрипт, например так:

php.exe con-test.php param1 param2 param3 tramparamparamparam

Портабельный скрипт

Все это не имело бы большого смысла, если бы для запуска скрипта пришлось бы тащить с собой Web-сервер или весь дистрибьютив PHP, со всеми модулями и прочим. Для минимального запуска PHP под Windows нужно всего 2 файла: php.exe и php*ts.dll , где * — версия PHP. Например, для использованного мной PHP5, это php5ts.dll

Разные мелочи

— Инклюды. Если скрипт подразумевает использование инклюдов, то их лучше держать либо в директории с главным скриптом, либо в поддиректориях, и прописывать в основном скрипте относительные пути. Т.е. так, как это обычно делается на сервере. Иначе PHP будет искать их либо в include_path, который прописан в php.ini, либо вообще неведомо где, точнее ведомо — это указывается как параметр при сборке самого PHP, если мне не изменяет склероз.

— php.ini Вообще, для запуска PHP он не нужен, но тут может вкрасться чущественная гадость. Если на машине уже установлен PHP, или php.ini подложен каким-то злоумышленником в каталог по умолчанию, для многих сборок под Windows это %WINDIR% , то может случиться неприятность.
Сам PHP ищет свой php.ini сначала в каталоге с самим собой, так что можно туда его подложить.

— Расширения PHP. Можно подложить нужные DLL расширений в подкаталог в каталоге с php.exe и прописать в extension_dir в php.ini относительный путь к каналогу, а в соответствующих параметрах extension — имена DLL

— PHP я цельностянул из Denwer ��

1. Создание EXE приложений на PHP Копия
2. Оффлайновые лекционные тетради в клеточку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *