Командная строка php: PHP: Использование PHP в командной строке

Программирование в PHP для командной строки / Хабр

Предисловие

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

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

  1. $virtual_hosts_dir = «/etc/apache2/sites-available/»;
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4.     echo «You must run this script as root!\n»;
  5.     exit;
  6. }
Получение информации из параметров

Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:
  1. if ($argc>1) 
  2.     for ($i=1; $i<$argc; $i++) 
  3.     { 
  4.         $option = explode(«=», $argv[$i]); 
  5.         switch ($option[0]) 
  6.         { 
  7.             case «-h»: 
  8.             case «—add-to-hosts»: 
  9.                 $add_to_hosts = true; 
  10.             break;
  11.  
  12.             case «-n»: 
  13.             case «—no-add-to-hosts»: 
  14.                 $add_to_hosts = false; 
  15.             break;
  16.  
  17.             case «-a»: 
  18.             case «—server-alias»: 
  19.                 if (isset($option[1])) 
  20.                 { 
  21.                     $server_alias = $option[1]; 
  22.                 } 
  23.                 else 
  24.                 { 
  25.                     echo «Wrong option: {$argv[$i]}\n»; 
  26.                 } 
  27.             break;
  28.  
  29.             case «-d»: 
  30.             case «—document-root»: 
  31.                 if (isset($option[1])) 
  32.                 { 
  33.                     if ($option[1] == «default») 
  34.                     { 
  35.                         $document_root = $default_doc_root 
  36.                     } 
  37.                     else if (is_dir(dirname($option[1]))) 
  38.                     { 
  39.                         $document_root = $option[1]; 
  40.                     } 
  41.                 } 
  42.                 else 
  43.                 { 
  44.                     echo «Wrong option: {$argv[$i]}\n»; 
  45.                 } 
  46.             break;
  47.  
  48.             default: 
  49.                 if (substr($argv[$i], 1, 1) == ‘-‘) 
  50.                 { 
  51.                     echo «Unknown option: {$argv[$i]}\n»; 
  52.                 } 
  53.             break; 
  54.         } 
  55.     } 
  56. }
  57.  
Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:
  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:
  1. $stdin = fopen(«php://stdin», «r»);
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

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

  1. while (!$server_alias)
  2. {
  3.     echo «Enter your hostname: «;
  4.     $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3.     echo «Add $server_alias to your /etc/hosts ? (Y/N) [Y]: «;
  4.     $line = trim(fgets(STDIN));
  5.     if ($line == ‘n’ || $line == ‘N’)
  6.     {
  7.         $add_to_hosts = false;
  8.     }
  9.     else
  10.     {
  11.         $add_to_hosts = true;
  12.     }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root) 
  2.     $default_doc_root = $default_doc_root.’/’.$server_alias; 
  3.     echo «Enter your document root [$default_doc_root]: «; 
  4.     $line = trim(fgets(STDIN)); 
  5.     if ($line && is_dir(dirname($line))) 
  6.     { 
  7.         $document_root = $line; 
  8.     } 
  9.     else 
  10.     { 
  11.         $document_root = $default_doc_root; 
  12.     } 
  13. }
  14.  
Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:
  1. if (!is_dir($document_root))
  2. {
  3.     mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3.     $hosts = file_get_contents(«/etc/hosts»);
  4.     $hosts .= «127.0.0.1\t$server_alias\n»;
  5.     file_put_contents(«/etc/hosts», $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80> 
  3. ServerAdmin [email protected] 
  4. ServerAlias $server_alias
  5.  
  6. DocumentRoot $document_root 
  7. <Directory $document_root> 
  8.     Options Indexes FollowSymLinks MultiViews 
  9.     AllowOverride All 
  10.     Order allow,deny 
  11.     allow from all 
  12. </Directory>
  13.  
  14. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log; 
  15. LogLevel warn 
  16. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  17. </VirtualHost>
  18. HOST;
  19.  

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents(«/etc/apache2/sites-available/$server_alias», $host_template); 
  2. echo «Apache config for this hostname created successfully! Don’t forget to run a2ensite $server_alias\n»;
  3.  

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +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

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

    Замечание:

    Как PATH, так и PATHEXT являются важными системные переменными в Windows, поэтому важно не затереть их текущее значение, а только дописать нужные данные в конец.

  • Допишите расположение исполняемых файлов 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
    

Выполнение этих шагов позволит 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

Попробуйте использовать командный файл

  1. Открыть блокнот
  2. Тип php -S localhost:8000
  3. сохранить файл как расширение .bat , server.bat
  4. теперь нажмите на 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 

К вашим особенностям

  1. Why I'm not able to see the output at command prompt or a web browser? Потому что вывод отправляется в командную строку. Запросы браузера отправляются через веб-сервер в браузер
  2. Is it necessary to start the XAMPP server like I normally do to run the program from command prompt too? Для запросов CLI нет. PHP является исполняемым и может работать сам по себе. Если вы хотите выполнять запросы браузера, тогда XAMPP должен быть запущен.
  3. Is there really a need to set environment variables? If yes why? If no why? На самом деле, нет. CLI будет обращать внимание только на то, что php.ini XAMPP предназначены для Apache, в основном.
  4. But I'm not understanding the reason why people do insist for running the PHP programs from Command Line . Основная причина – автоматизированные задачи. У меня есть несколько процессов на работе, которые я запускаю на работу cron.

Пошаговое руководство по переменным путям в Windows 10

  1. Щелкните правой кнопкой мыши кнопку «Пуск» Windows , выберите « Система»

  1. Нажмите « Сведения о системе»

  1. Нажмите « Дополнительные настройки системы»

  1. Нажмите « Переменные среды»

  1. Выберите PATH в разделе « Системные переменные» и нажмите « Изменить» .

  1. Нажмите « Создать» , введите местоположение «Путь» для исполняемого файла

  1. Нажмите 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

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

Вызов функции PHP из командной строки

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
.

Имя сервера PHP из командной строки

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

php — Обновить вывод командной строки, т.е. для Progress

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.
Posted in Php

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

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