Командная строка php: PHP: Использование PHP в командной строке
Программирование в PHP для командной строки / Хабр
Предисловие
Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.
Проверка прав доступа
Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.
Прежде всего, нам нужно проверить, есть ли у нас право на запись в ту самую папку, которая содержит в себе конфиги виртуальных хостов, а обычно для этого нужны root права. Проверить это довольно просто:
- $virtual_hosts_dir = «/etc/apache2/sites-available/»;
- if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
- {
- echo «You must run this script as root!\n»;
- exit;
- }
Получение информации из параметров
Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:
- if ($argc>1)
- {
- for ($i=1; $i<$argc; $i++)
- {
- $option = explode(«=», $argv[$i]);
- switch ($option[0])
- {
- case «-h»:
- case «—add-to-hosts»:
- $add_to_hosts = true;
- break;
- case «-n»:
- case «—no-add-to-hosts»:
- $add_to_hosts = false;
- break;
- case «-a»:
- case «—server-alias»:
- if (isset($option[1]))
- {
- $server_alias = $option[1];
- }
- else
- {
- echo «Wrong option: {$argv[$i]}\n»;
- }
- break;
- case «-d»:
- case «—document-root»:
- if (isset($option[1]))
- {
- if ($option[1] == «default»)
- {
- $document_root = $default_doc_root
- }
- else if (is_dir(dirname($option[1])))
- {
- $document_root = $option[1];
- }
- }
- else
- {
- echo «Wrong option: {$argv[$i]}\n»;
- }
- break;
- default:
- if (substr($argv[$i], 1, 1) == ‘-‘)
- {
- echo «Unknown option: {$argv[$i]}\n»;
- }
- break;
- }
- }
- }
Потоки ввода\вывода
Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:
- $line = fgets(STDIN);
просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:
- $stdin = fopen(«php://stdin», «r»);
- $line1 = gets($stdin);
- $line2 = gets($stdin);
- fclose($stdin);
В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.
Продолжаем писать наш скрипт. Пока у нас нет хоть какой-то строки в качестве имени хоста, продолжаем просить пользователя, чтобы он что-то ввел:
- while (!$server_alias)
- {
- echo «Enter your hostname: «;
- $server_alias = trim(fgets(STDIN));
- }
Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:
- if ($add_to_hosts === null)
- {
- echo «Add $server_alias to your /etc/hosts ? (Y/N) [Y]: «;
- $line = trim(fgets(STDIN));
- if ($line == ‘n’ || $line == ‘N’)
- {
- $add_to_hosts = false;
- }
- else
- {
- $add_to_hosts = true;
- }
- }
То же самое и с корневой директорией сайта:
- if (!$document_root)
- {
- $default_doc_root = $default_doc_root.’/’.$server_alias;
- echo «Enter your document root [$default_doc_root]: «;
- $line = trim(fgets(STDIN));
- if ($line && is_dir(dirname($line)))
- {
- $document_root = $line;
- }
- else
- {
- $document_root = $default_doc_root;
- }
- }
Генерация конфиг-файла
На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:
- if (!is_dir($document_root))
- {
- mkdir($document_root);
- }
Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:
- if ($add_to_hosts)
- {
- $hosts = file_get_contents(«/etc/hosts»);
- $hosts .= «127.0.0.1\t$server_alias\n»;
- file_put_contents(«/etc/hosts», $hosts);
- }
Собственно так выглядит шаблон нашего конфига:
- $host_template = <<<HOST
- <VirtualHost *:80>
- ServerAdmin [email protected]
- ServerAlias $server_alias
- DocumentRoot $document_root
- <Directory $document_root>
- Options Indexes FollowSymLinks MultiViews
- AllowOverride All
- Order allow,deny
- allow from all
- </Directory>
- ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log;
- LogLevel warn
- CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
- </VirtualHost>
- HOST;
Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:
- file_put_contents(«/etc/apache2/sites-available/$server_alias», $host_template);
- echo «Apache config for this hostname created successfully! Don’t forget to run a2ensite $server_alias\n»;
Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:chmod +x a2addsite
Использование
Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don’t forget to run a2ensite test.local
так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite —server-alias=test2.local —add-to-hosts —document-root=default
Apache config for this hostname created successfully! Don’t forget to run a2ensite test2.local
Выводы
PHP можно использовать не только для разработки сайтов, но и для решения мелких локальных задач на компьютере. Скрипт я писал под себя и, наверняка, кто-то из Вас переделает его под свои нужды.
Исходный код скрипта
Литература
Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output
Командная строка PHP в Microsoft Windows | Руководство по PHP
В этом разделе содержатся заметки и советы по работе PHP, запущенного
из командной строки.
Замечание:
Сначала прочитайте руководство
по установке !
PHP, запущенный из командной строки, может выполняться без каких-либо изменений в Windows.
C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
Но есть несколько простых шагов, которые могут упростить задачу.
Некоторые из этих шагов уже могли быть выполнены, но будут приведены
здесь для того, чтобы последовательность операций не была нарушена.
-
Допишите расположение исполняемых файлов php (php.exe,
php-win.exe или php-cli.exe в зависимости
от ваших предпочтений и версии PHP) в конец переменной окружения PATH.
О том, как добавить вашу директорию к PATH
читайте в соответствующем разделе FAQ. -
Допишите .PHP расширение в конец переменной окружения
PATHEXT. Это может быть сделано при изменении
переменной PATH. Сделайте те же шаги, которые описаны в FAQ, но измените переменную
PATHEXT вместо PATH.Замечание:
Позиция, в которой вы разместите .PHP, будет определять,
какой скрипт или программа будут запущенны для обработки файла с
соответствующим расширением. Например, разместив .PHP перед
.BAT, сначала будет запущен ваш скрипт, а не пакетный файл,
если есть исполняемый файл с тем же именем. -
Ассоциируйте расширение .PHP с конкретным типом файла. Это
можно сделать выполнив следующую команду: -
Ассоциируйте тип файла phpfile с соответствующим исполняемым PHP файлом.
Это можно сделать выполнив команду:ftype phpfile="C:\PHP5\php.exe" -f "%1" -- %~2
Замечание:
Как PATH, так и PATHEXT
являются важными системные переменными в Windows, поэтому важно не затереть
их текущее значение, а только дописать нужные данные в конец.
Выполнение этих шагов позволит PHP скриптам выполняться из любой директории
без необходимости указывать исполняемый PHP файл или расширение
.PHP, а все параметры будут переданы в скрипт для обработки.
В примере ниже описываются некоторые изменения реестра, которые могут быть сделаны вручную.
Пример #1 Изменения реестра
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php] @="phpfile" "Content Type"="application/php" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile] @="PHP Script" "EditFlags"=dword:00000000 "BrowserFlags"=dword:00000008 "AlwaysShowExt"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon] @="C:\\PHP5\\php-win.exe,0" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell] @="Open" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open] @="&Open" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command] @="\"C:\\PHP5\\php.exe\" -f \"%1\" -- %~2"
С этими изменениями команда может быть записана как:
"C:\PHP Scripts\script" -arg1 -arg2 -arg3
или, если ваш путь в переменной окружения «C:\PHP Scripts»
PATH:
Замечание:
Возникает небольшая проблема, если вы собираетесь использовать эту технику
и используете ваши PHP-скрипты как фильтры командной строки, как в примере ниже:dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3или
dir | script -arg1 -arg2 -arg3Вы можете увидеть, что ваш скрипт завис и ничего не делает.
Для того чтобы оперативно получать об этом информацию,
вам нужно внести в реестр еще некоторые изменений.Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "InheritConsoleHandles"=dword:00000001Дополнительную информацию можно найти в » базе знаний Microsoft, статья 321788.
Вернуться к: Установка в системах Windows
PHP: Введение — Manual
Введение
Основная цель этого CLI SAPI —
разработка консольных приложений на PHP.
Имеется довольно много различий между
CLI SAPI и другими видами SAPI, которые
будут рассмотрены в этой главе.
Стоит отметить, что CLI SAPI и CGI —
различные SAPI-интерфейсы, хотя в их поведении много общего.
CLI SAPI включается по умолчанию с помощью опции
—enable-cli, но может быть выключен
опцией —disable-cli при запуске
./configure.
Имя, расположение и существование бинарных модулей
CLI/CGI зависит от того, как именно
установлен PHP в вашей системе. По умолчанию при выполнении
make создается как CGI-,
так и CLI-модуль, размещенные в директориях
sapi/cgi/php-cgi
и sapi/cli/php соответственно,
внутри директории с исходниками PHP.
Следует заметить, что оба файла имеют одинаковое название:
php.
Что произойдет при выполнении make install,
зависит от того, какие опции вы указали на стадии
конфигурирования. Если выбран модуль SAPI
во время выполнения, например, apxs, или используется опция
опция —disable-cgi,
модуль CLI будет скопирован в {PREFIX}/bin/php при
выполнении make install, в противном случае
будет скопирован CGI-модуль. Например, если
задана опция —with-apxs,
то при выполнении make install
CLI-версия будет скопирована в {PREFIX}/bin/php.
Если вы хотите переопределить установку CGI-модуль,
используйте make install-cli после выполнения
make install. В качестве альтернативы
вы могли бы указать опцию —disable-cgi
в строке конфигурации.
Замечание:
Поскольку обе опции, —enable-cli
и —enable-cgi, включены
по умолчанию, просто налилчие
—enable-cli в команде
конфигурации необязательно означает, что CLI будет скопирован
в {PREFIX}/bin/php при выполнении
make install.
Начиная с PHP 5, бинарный файл CLI входит в дистрибутив
для Windows в основной папке в качестве файлаphp.exe.
CGI-версия находится в файле php-cgi.exe.
Кроме того, в дистрибутив входит файл php-win.exe,
если PHP был сконфигурирован с помощью —enable-cli-win32.
Он полностью эквивалентен CLI-версии, за исключением того,
что абсолютно ничего не выводит, и, таким образом, не предоставляет консоль
(окно терминала не появляется на экране).
Замечание:
Какой из вариантов SAPI установлен?Выполните из командной строки php -v
для получения информации о том, является ли php
CGI или CLI. Также вы можете использовать
функцию php_sapi_name() или константу
PHP_SAPI
.
Замечание:
Соответствующую страницу руководства (
man
)
Unix можно просмотреть с помощью команды man php
в консоли.
Как запустить PHP из командной строки Windows PHP Lang
Я новичок в php и хочу запустить php из командной строки. Я установил WAMP и установил «Системные переменные» в свою папку php (это C:\wamp\bin\php\php5.4.3
).
Когда я иду в Run
-> CMD
-> Введите php -a
и нажмите enter, он говорит, что interactive mode enabled
. Но когда я пишу echo 'Hi';
он ничего не показывает.
Я даже не вижу ничего подобного «php>», когда я php -a
и нажимаю enter.
PHP CLI как его называемый (php для интерфейса командной строки) называется php.exe. Он живет в c:\wamp\bin\php\php5.xy\php.exe
(где x и y – номера версий php, которые вы установили)
Если вы хотите создать php-скрипты для запуска из командной строки, тогда это будет очень просто и очень полезно.
Создайте себе пакетный файл, как это, позвоните ему phppath.cmd
:
PATH=%PATH%;c:\wamp\bin\php\php5.xy php -v
Сохраните это в одной из ваших папок, которая уже находится на вашем PATH, поэтому вы можете запускать ее из любого места.
Теперь из командного окна, cd в исходную папку и запустите> phppath.
Затем запустите
php your_script.php
Он должен работать как сон.
Вот пример, который настраивает PHP Composer и PEAR, если это необходимо, и они существуют
@echo off REM ************************************************************** REM * PLACE This file in a folder that is already on your PATH REM * Or just put it in your C:\Windows folder as that is on the REM * Serch path by default REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer REM ************************************************************** set baseWamp=D:\wamp set defaultPHPver=7.1.9 set composerInstalled=%baseWamp%\composer set phpFolder=\bin\php\php if %1.==. ( set phpver=%baseWamp%%phpFolder%%defaultPHPver% ) else ( set phpver=%baseWamp%%phpFolder%%1 ) PATH=%PATH%;%phpver% php -v echo --------------------------------------------------------------- REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP IF exist %phpver%\pear ( set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver% set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests echo PEAR INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- ) else ( echo PEAR DOES NOT EXIST IN THIS VERSION OF php echo --------------------------------------------------------------- ) REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM ************************************************************** REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO REM * REM * This assumes that composer is installed in /wamp/composer REM * REM ************************************************************** IF EXIST %composerInstalled% ( ECHO COMPOSER INCLUDED IN THIS CONFIG echo --------------------------------------------------------------- set COMPOSER_HOME=%baseWamp%\composer set COMPOSER_CACHE_DIR=%baseWamp%\composer PATH=%PATH%;%baseWamp%\composer rem echo TO UPDATE COMPOSER do > composer self-update echo --------------------------------------------------------------- ) else ( echo --------------------------------------------------------------- echo COMPOSER IS NOT INSTALLED echo --------------------------------------------------------------- ) set baseWamp= set defaultPHPver= set composerInstalled= set phpFolder=
Вызовите этот командный файл таким образом, чтобы использовать стандартную версию PHP
> phppath
Или получить определенную версию PHP, как это
> phppath 5.6.30
Я помню один раз, когда несколько месяцев назад я наткнулся на эту проблему, потому что в окнах нет readline, поэтому нет интерактивной оболочки, чтобы использовать интерактивный режим php без поддержки readline, вы можете сделать это вместо этого:
C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world!
После входа в интерактивный режим введите с помощью открытия ( <?php
) и закрытия ( ?>
) Php-тега и завершите управление Z ( ^Z
), которое обозначает конец файла.
Я также помню, что я нашел решение от комментария пользователя сайта php: http://www.php.net/manual/en/features.commandline.interactive.php#105729
Попробуйте использовать командный файл
- Открыть блокнот
- Тип
php -S localhost:8000
- сохранить файл как расширение
.bat
,server.bat
- теперь нажмите на
server.bat
файл, ваш сервер готов наhttp://localhost:8000
зависимость
если у вас возникла ошибка, php не распознает какую-либо внутреннюю или внешнюю команду, то перейдите в переменную окружения и измените путь к php.exe "C:\wamp\bin\php\php5.4.3"
Проблема, которую вы описываете, звучит так, как ваша версия PHP может отсутствовать PHP-модуль readline, в результате чего интерактивная оболочка не работает. Я основываю это на этом представлении ошибок PHP .
Попробуйте запустить
php -m
И посмотрите, появляется ли на выходе «readline».
Могут быть веские причины для отказа от чтения из дистрибутива. PHP обычно выполняется веб-сервером; поэтому на самом деле это не нужно для большинства случаев использования. Я уверен, что вы можете выполнить PHP-код в файле из командной строки, используя:
php file.php
Существует также проект phpsh, который обеспечивает (лучшую) интерактивную оболочку для PHP. Тем не менее, некоторые люди столкнулись с трудностями при работе под Windows (я сам этого не пробовал).
Изменить : согласно документации здесь , readline
не поддерживается в Windows:
Примечание. Это расширение недоступно на платформах Windows.
Итак, если это правильно, ваши варианты:
- Избегайте интерактивной оболочки и просто выполняйте PHP-код в файлах из командной строки – это должно хорошо работать
- Попробуйте заставить phpsh работать под Windows
Если вы хотите просто запустить быстрый фрагмент кода, вы можете использовать параметр -r:
php -r "echo 'hi';"
-r позволяет запускать код без использования тегов скриптов <?..?>
ОБНОВЛЕНО. После нескольких исследований лучшим решением было использование этой информации в другом потоке stackoverflow, чтобы избежать ввода ctrl + z, а также из вывода scree. Итак, вместо php -a
вы должны использовать call "php.exe" -f NAMED_SCRIPT.php
OLD Readline невозможен в Windows, поэтому ни одна из существующих php-оболочек, написанных на php, не будет работать. Но есть обходной путь, использующий интерактивный режим.
2 проблемы с сообщением здесь. Вы не можете увидеть результат до выполнения команды CTRL Z, чтобы указать окончательный код / файл, например EOF. Когда вы это делаете, результатом в большинстве случаев является результат печати и быстрое закрытое окно. Во всяком случае, вы вернетесь в cmd, а не в интерактивный режим.
Сохраните этот контент в файле .bat и определите свой PHP PATH в переменные Windows или измените php.exe на «полный путь к exe»:
:: :: PHP Shell launch wrapper :: @ECHO off call "php.exe" -a echo. echo. call "PHP Shell.bat"
Это простой пакетный запуск – режим php.exe. Когда он запускает php, останавливает скрипт, даже пауза не записывается, потому что «находится» в интерактивном ожидании ввода. Когда вы нажимаете CTRL Z, получает SIGSTEP (следующий шаг), а не SIGSTOP (обычно закрывайте, CTRL + C), затем читайте следующую конструкцию, которая является рекурсивным вызовом самому .bat. Поскольку вы всегда находитесь в режиме PHP -a, нет команды выхода. Вы должны использовать CTRL + C или нажать на крест на выходе с помощью мыши. (Нет alt + f4)
Вы также можете использовать конвертер «Bat to Exe» для удобства использования.
Вы можете запускать php-страницы, используя php.exe, создать некоторый php-файл с php-кодом и в cmd записать "[PATH to php.ext]\php.exe [path_to_file]\file.php"
Это потому, что вы находитесь в «Интерактивном режиме», где php оценивает все, что вы набираете. Чтобы увидеть конечный результат, вы делаете «ctrl + z» и Enter. Теперь вы должны увидеть оцениваемый результат 🙂
ps запускает cmd как Администратор!
В Windows поместите файл php.exe в windows / system32 или в другие системные исполняемые папки, а затем перейдите в командную строку и введите php и нажмите Enter, следуя за ним, если он не генерирует никаких ошибок, тогда вы готовы использовать PHP в командной строке , Если вы установили свой php.exe где-то еще, кроме системных папок по умолчанию, вам нужно установить путь к нему в переменных среды! Вы можете попасть туда по следующему пути ….
панель управления -> Система -> Изменить переменные среды вашей учетной записи -> Environment Vaiables -> path -> edit, а затем установить абсолютный путь вашего php.exe и следовать той же процедуре, что и в первом абзаце, если ничего в ошибке отдела, то вы готовы использовать php из командной строки!
Следующее решение специально предназначено для среды Wamp:
Это лишило меня на некоторое время, попробовал все другие предложения, $ PATH и т. Д. Даже искал реестр Windows, ища подсказки:
GUI (wampmanager) указывает, что у меня есть версия 7, и да, если я phpinfo () на странице в браузере, она скажет мне, что ее версия 7.xx все же php -v в командной строке сообщает о 5.xx
Если вы нажмете правой кнопкой мыши на голову wampmanager на значок-> tools-> удалить неиспользуемые версии и удалите старую версию, позвольте ей перезапустить службы, тогда командная строка вернет 7.xx
Это решение означает, что у вас больше нет старой версии, если вы хотите переключиться между версиями php, но есть файл конфигурации в C: \ wamp64 \ wampmanager.conf, который, как представляется, указывает версию для использования с CLI (этот параметр называется phpCliVersion) , Я изменил его, перезапустил сервер … думал, что я решил это, но никакого эффекта, возможно, я был немного нетерпелив, поэтому у меня есть ощущение, что в этом может быть пробег.
Надежда, которая помогает кому-то
Все ответы хороши, но немного дольше. Вот фактический вопрос: как запустить PHP-скрипт из командной строки Windows. Если вы не добавили исполняемый файл PHP в системную переменную Windows, это быстрый способ легко запустить PHP-скрипт. [path to PHP excutable]/php.exe [path to php file]/somefile.php
В моем случае c:\xampp\htdocs>C:/xampp/php/php.exe info.php
Теперь, если вы хотите напрямую выполнить PHP-код в командной строке, напишите код, как это … [path to PHP executable]/php.exe -r "echo 'hi';"
Работа с PHP-скриптами в командной строке | REG.RU
По умолчанию php скрипты запускаются под «системной» сборкой php (5.3), например:
-bash-4.1$ php www/mysite.ru/info.php
phpinfo()
PHP Version => 5.3.3
...
Соответственно, команда php -v
покажет информацию о «системной» сборке php, а не той, что активирована в панели управления хостингом:
-bash-4.1$ php -v
PHP 5.3.3 (cli) (built: Jul 9 2015 17:39:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd., and
with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
Сборки php, которые вам доступны в панели управления хостингом, расположены в /opt/php:
-bash-4.1$ ls /opt/php
4.4.9 5.2 5.3-bx-optimized 5.4-bx-optimized 5.5 5.6 7.0 7.1
5.1 5.3 5.4 5.4-bx-optimized2 5.5-bx-optimized 5.6-bx-optimized 7.0-bx-optimized
Как запустить скрипт под определённой версией PHP
Обратите внимание: скрипты можно запускать и через php, и через php-cgi. Например:
- /opt/php/5.4-with-xcache/bin/php-cgi
- /opt/php/5.4-with-xcache/bin/php
О том, какой режим подойдет для работы скриптов, вы можете узнать у разработчиков вашего сайта.
Для запуска скрипта под версией «php 5.5» необходимо выполнить команду:
/opt/php/5.5/bin/php www/mysite.ru/info.php
где:
- /opt/php/5.5/bin/php — путь к обработчику;
- www/mysite.ru/info.php — путь к скрипту.
на примере phpinfo
-bash-4.1$ /opt/php/5.5/bin/php www/mysite.ru/info.php
X-Powered-By: PHP/5.5.23
Content-type: text/html
...
видно, что скрипт запустился под «php 5.5».
Аналогичным образом можно запустить скрипт под любой другой доступной сборкой php:
/opt/php/4.4.9/bin/php
/opt/php/5.1/bin/php
/opt/php/5.2/bin/php
/opt/php/5.3/bin/php
/opt/php/5.3-bx-optimized/bin/php
/opt/php/5.3-with-xcache/bin/php
/opt/php/5.4/bin/php
/opt/php/5.4-bx-optimized/bin/php
/opt/php/5.4-bx-optimized2/bin/php
/opt/php/5.4-with-xcache/bin/php
/opt/php/5.5/bin/php
/opt/php/5.5-bx-optimized/bin/php
/opt/php/5.6/bin/php
/opt/php/5.6-bx-optimized/bin/php
/opt/php/7.0/bin/php
/opt/php/7.0-bx-optimized/bin/php
/opt/php/7.1/bin/php
Узнать подробную информацию о сборке php можно при помощи команды:
/opt/php/.../bin/php -i
# Узнать список доступных модулей:
/opt/php/.../bin/php -m
Помогла ли вам статья?
40
раз уже
помогла
Как запустить программу PHP из командной строки на Windows-машине? PHP Lang
По профессии я разработчик PHP .
Я использую ноутбук Lenovo Ideapad, который работает в Windows 10 Home Single Language 64-разрядная операционная система
Я также установил XAMPP Control Panel v3.2.2 в папку «C: \ xampp» для выполнения программ PHP в веб-браузере на моей машине.
Файл «php.exe» присутствует в месте «C: \ xampp \ php» .
Корневой каталог документа для сохранения файлов PHP находится в папке «C: \ xampp \ htdocs» .
Я могу запускать созданные мной программы PHP и сохранять их в каталоге C: \ xampp \ htdocs \ html_playground , запустив программное обеспечение XAMPP (дважды щелкнув ярлык XAMPP на моем рабочем столе) и введя URL-адрес файла программы например, « http: //localhost/html_playground/sample.php » в адресной строке браузера.
Таким образом, я могу запустить программы PHP точно, но я хочу запустить ту же программу из командной строки Windows
Последняя новая строка выглядела следующим образом:
Затем вместо отображения вывода программы он открыл тот же файл в Sublime Text (редактор, который я использую для написания кода)
Файл sample.php имеет следующий исполняемый код PHP :
Для вашей справки я также прикрепляю экранный снимок окна командной строки:
Пожалуйста, помогите мне, отвечая на мои вопросы и помогая мне запустить программу из командной строки.
Даже я попытался перезагрузить ПК и запустить команду php -v, но это также не сработало. Ниже показан снимок экрана:
Если вы хотите запустить CLI PHP, я бы настоятельно предложил установить php vanilla, найденный на windows.php.net . Пусть он устанавливается на C:\php
. Причина, по которой я рекомендую это, заключается в том, что если вы когда-либо захотите использовать Composer (и у вас есть действительно хороший шанс), он найдет его там.
Теперь вы можете открыть командную строку и запустить скрипты, как показано ниже.
C:\php\php.exe C:\path\to\php\script.php
К вашим особенностям
-
Why I'm not able to see the output at command prompt or a web browser?
Потому что вывод отправляется в командную строку. Запросы браузера отправляются через веб-сервер в браузер -
Is it necessary to start the XAMPP server like I normally do to run the program from command prompt too?
Для запросов CLI нет. PHP является исполняемым и может работать сам по себе. Если вы хотите выполнять запросы браузера, тогда XAMPP должен быть запущен. -
Is there really a need to set environment variables? If yes why? If no why?
На самом деле, нет. CLI будет обращать внимание только на то, чтоphp.ini
XAMPP предназначены для Apache, в основном. -
But I'm not understanding the reason why people do insist for running the PHP programs from Command Line
. Основная причина – автоматизированные задачи. У меня есть несколько процессов на работе, которые я запускаю на работу cron.
Пошаговое руководство по переменным путям в Windows 10
- Щелкните правой кнопкой мыши кнопку «Пуск» Windows , выберите « Система»
- Нажмите « Сведения о системе»
- Нажмите « Дополнительные настройки системы»
- Нажмите « Переменные среды»
- Выберите PATH в разделе « Системные переменные» и нажмите « Изменить» .
- Нажмите « Создать» , введите местоположение «Путь» для исполняемого файла
- Нажмите OK и APPLY на всех соответствующих панелях, затем перезагрузите компьютер .
Шаг 1. Щелкните правой кнопкой мыши значок «Компьютер» на рабочем столе и выберите «Свойства».
Шаг 2. В окне «Система» нажмите «Дополнительные системные настройки» на левой панели.
Шаг 3: В окне «Свойства системы» выберите «Дополнительно» в горизонтальном меню вверху и нажмите кнопку «Переменные среды», указанную в нижней части окна.
Шаг 4: В следующем окне вызовите переменные среды, перейдите в Системную переменную (вторая сетка) и найдите переменную Path и нажмите Edit. Если переменная Path отсутствует, нажмите «Создать».
Если вы редактируете, добавьте точку с запятой до пути, который вы добавляете к отдельным переменным.
Шаг 5: Получите путь php, где вы установили XAMPP. Добавьте этот путь к значению переменной в появившемся маленьком диалоговом окне.
Шаг 6: Нажмите ОК и закройте все окна.
Шаг 7. Откройте командную строку с помощью cmd.
Шаг 8: cd to your_install_path / xampp / htdocs
Шаг 9: введите команду «php -i | Больше’
Шаг 10: Нет шага 10.
Откройте командную строку в том же каталоге, что и php.exe, и вызовите программу с аргументом файла, который вы хотите обработать.
C:\xampp\php\php.exe C:\xamp\htdocs\html_playground\test.php
Если test.php содержится; <?php echo "Hello World"; ?>
<?php echo "Hello World"; ?>
тогда командная строка выводит «Hello World» и возвращает стандартный пользовательский ввод CMD CLI.
Причина, по которой ваш вызов >php
не работает, более чем вероятно из-за переменной среды PATH, не содержащей правильного расположения для PHP, отредактируйте системные переменные и добавьте ‘C: \ xampp \ php \;’ в строку PATH. Затем это должно позволить вам вызвать php C:\xamp\htdocs\html_playground\test.php
для того же выхода, что и выше.
Поскольку вы установили XAMPP
тогда вы можете запустить PHP
из окна SHELL панели управления XAMPP v3.2.2
В моем тестовом случае я использую небольшой файл index.php
внутри каталога c:\xampp\htdocs\tester
содержимое index.php
:
echo "This is output from command line "."\n"; if(!empty($argv)) { foreach($argv as $key => $arg) { if($key>0) { echo "command line argument ".$key ." ". $arg."\n"; } } }
Просто введите следующее в окне командной строки.
php C:\xampp\htdocs\tester\index.php var1=1 var2="lorem ipsum..."
Вывод
Вы можете увидеть вывод php
кода в вашем браузере с помощью флага -S
:
php -S <host/ip>:<port>
Чтобы протестировать его, создайте файл sample.php
содержащий:
<?php echo "Hello World from built-in PHP server";
и запустите команду php -S localhost:8080
из командной строки ( не включайте http: // ).
Это запустит веб-сервер, прослушивающий порт 8080, используя текущий каталог, в котором вы находитесь в качестве корня документа.
Откройте браузер и перейдите по адресу http: // localhost: 8080 . Вы должны увидеть страницу «Hello World».
Примечание. Мое предположение заключается в том, что вы находитесь в каталоге, где присутствует sample.php
.
Простой, короткий и идеальный ответ для вас. Попробуйте хотя бы один раз, когда вы получите успех 🙂
Открыть C: \ xampp \ php (или ваш путь может отличаться в зависимости от того, где вы его установили)
Теперь запустите PHP.exe
теперь просто следуйте этому типу
php -a
и затем начните писать свой код.
например
<?php echo "Hello, world!"; ?>
Затем нажмите CTRL + Z, а затем Enter
Привет мир! // Вывод
Аргументы и параметры командной строки PHP
Переполнение стека
- Около
-
Продукты
- Для команд
-
Переполнение стека
Общественные вопросы и ответы -
Переполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегами -
Вакансии
Программирование и связанные с ним технические возможности карьерного роста -
Талант
Нанимайте технических специалистов и создавайте свой бренд работодателя -
Реклама
Обратитесь к разработчикам и технологам со всего мира - О компании
.
Вызов функции PHP из командной строки
Переполнение стека
- Около
-
Продукты
- Для команд
-
Переполнение стека
Общественные вопросы и ответы -
Переполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегами -
Вакансии
Программирование и связанные с ним технические возможности карьерного роста -
Талант
Нанимайте технических специалистов и создавайте свой бренд работодателя -
Реклама
Обратитесь к разработчикам и технологам со всего мира
.
Имя сервера PHP из командной строки
Переполнение стека
- Около
-
Продукты
- Для команд
-
Переполнение стека
Общественные вопросы и ответы -
Переполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегами -
Вакансии
Программирование и связанные с ним технические возможности карьерного роста -
Талант
Нанимайте технических специалистов и создавайте свой бренд работодателя -
Реклама
Обратитесь к разработчикам и технологам со всего мира - О компании
Загрузка…
.
php — Обновить вывод командной строки, т.е. для Progress
Переполнение стека
- Около
-
Продукты
- Для команд
-
Переполнение стека
Общественные вопросы и ответы -
Переполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегами -
Вакансии
Программирование и связанные с ним технические возможности карьерного роста -
Талант
Нанимайте технических специалистов и создавайте свой бренд работодателя -
Реклама
Обратитесь к разработчикам и технологам со всего мира - О компании
.