Execute php script in a bat file: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
m (Text replacement - ": Image:Owl icon.jpg " to "{{Tips}} ")
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
How to execute php script in a bat file
How to execute php script in a batch (bat) file


== Case 1: Execute the PHP script without passing parameters ==
 
== BAT and Bash File Examples ==
=== Example of BAT file for Windows ===
Condition 1: The DOS window was closed automatically when PHP script which implemented [http://php.net/manual/en/function.exit.php exit()] and return error code 1.
<pre>
@ECHO OFF
c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
if NOT ["%errorlevel%"]==["0"] (
    PAUSE
    exit /b %errorlevel%
)
</pre>
 
Condition 2: The DOS window was NOT closed automatically. It might annoying if there are too many DOS window.
<pre>
@ECHO OFF
c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
c:\path\to\php.exe "c:\path\to\php_script2.php" -var2=value2
PAUSE
</pre>
 
=== Example of BASH file for Linux ===
PHP script which implemented [http://php.net/manual/en/function.exit.php exit()] and return error code 1<ref>[https://stackoverflow.com/questions/6827837/accessing-errorlevel-from-bash-script cmd - accessing ERRORLEVEL from bash script - Stack Overflow]</ref><ref>[https://www.tldp.org/LDP/abs/html/comparison-ops.html Other Comparison Operators]</ref><ref>[https://unix.stackexchange.com/questions/293940/bash-how-can-i-make-press-any-key-to-continue Bash - How can I make "Press any key to continue" - Unix & Linux Stack Exchange]</ref>.
<pre>
#!/bin/bash
path/to/php "path/to/php_script.php" -var1=value1
if [ $? -eq 1 ]; then
  read -n 1 -s -r -p "Press any key to continue"
  exit 1
fi
</pre>
 
== Use cases ==
=== Case 1: Execute the PHP code directly ===
 
# Enter {{kbd | key=cmd}} to open Windows Command Line
# Enter the following command in Windows Command Line or save as BAT file:
 
<pre>
c:\path\to\php.exe -r "echo 'Hello';"
</pre>
 
{{Tips}} If you do not know where PHP installed, you may open the DOS window ({{kbd | key=<nowiki>cmd</nowiki>}}) and key in {{kbd | key=<nowiki>where php</nowiki>}} to find the path.
 
=== Case 2: Execute the PHP script file without passing parameters ===
<pre>
<pre>
c:\path\to\php.exe -f "c:\path\to\php_script.php"
c:\path\to\php.exe -f "c:\path\to\php_script.php"
Line 10: Line 54:
</pre>
</pre>


== Case 2: Execute the PHP script passing parameters ==
=== Case 3: Execute the PHP script file passing parameters ===
<pre>
<pre>
c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -var1=value1
c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -c=3


or
or


c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
c:\path\to\php.exe "c:\path\to\php_script.php" -a=2
</pre>
</pre>




Options "-f <file>       Parse and execute <file>."<ref>[http://php.net/manual/en/features.commandline.options.php PHP: Options - Manual]</ref>
Options "-f <file> Parse and execute <file>."<ref>[http://php.net/manual/en/features.commandline.options.php PHP: Options - Manual]</ref>
 
== Sample bat file ==
<pre>
@ECHO OFF
c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
c:\path\to\php.exe "c:\path\to\php_script2.php" -var2=value2
PAUSE
</pre>


instruction:
* [https://www.computerhope.com/echohlp.htm MS-DOS echo command help]
* {{kbd | key=<nowiki>PAUSE</nowiki>}} at the end of file to prevent auto closing of console window after the execution of batch file. <ref>[https://www.computerhope.com/pausehlp.htm MS-DOS pause command help]</ref><ref>[https://stackoverflow.com/questions/988403/how-to-prevent-auto-closing-of-console-after-the-execution-of-batch-file windows - How to prevent auto-closing of console after the execution of batch file. - Stack Overflow]</ref>


== Application: Run the PHP script automatically at a specified time ==
== Run the PHP script automatically at a specified time ==
* {{Gd}} {{Win}} Using [https://www.splinterware.com/products/scheduler.html System Scheduler] software & specify the path to bat file.
* {{Gd}} {{Win}} Using [https://www.splinterware.com/products/scheduler.html System Scheduler] software & specify the path to bat file.
* {{Win}} Task Scheduler in Windows 10<ref>[https://windowsreport.com/schedule-tasks-windows-10/ How to schedule tasks in Windows 10]</ref> (Windows 系統管理工具 → 工作排程器<ref>[https://key.chtouch.com/ContentView.aspx?P=2487 如何利用 Windows 10 內建的工作排程器,設定電腦定時自動關機、休眠或自動重開機?]</ref>)
* {{Win}} Task Scheduler in Windows 10<ref>[https://windowsreport.com/schedule-tasks-windows-10/ How to schedule tasks in Windows 10]</ref> (Windows 系統管理工具 → 工作排程器<ref>[https://key.chtouch.com/ContentView.aspx?P=2487 如何利用 Windows 10 內建的工作排程器,設定電腦定時自動關機、休眠或自動重開機?]</ref>)
Line 40: Line 73:


== Troubleshootings ==
== Troubleshootings ==
=== Error: The system cannot find the path specified. ===
<pre>
c:\path\to\php.exe -f "c:\path\to\php_script.php"
</pre>
Possible solutions: Check the php path if correct or not
<pre>
dir c:\path\to\php.exe
</pre>
=== Error: Could not open input file ===
Error message<ref>[https://stackoverflow.com/questions/29435912/how-do-i-pass-parameters-to-a-php-script-in-a-bat-file windows - How do I pass parameters to a php script in a bat file - Stack Overflow]</ref>: Could not open input file
Error message<ref>[https://stackoverflow.com/questions/29435912/how-do-i-pass-parameters-to-a-php-script-in-a-bat-file windows - How do I pass parameters to a php script in a bat file - Stack Overflow]</ref>: Could not open input file


Line 47: Line 91:
</pre>
</pre>


Solution: (1) add {{kbd | key=<nowiki>--</nowiki>}} after php script (2) remove {{kbd|key=<nowiki>-f</nowiki>}} option from command
Possible solutions: (1) add double dash symbol {{kbd | key=<nowiki>--</nowiki>}} after php script (2) remove {{kbd|key=<nowiki>-f</nowiki>}} option from command
<pre>
<pre>
c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -var1=value1
c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -var1=value1
Line 56: Line 100:
</pre>
</pre>


== References ==
(3) Enclose the whole path with double quote symbols
<references />
<pre>
Wrong: c:\path\to\php.exe c:\path\contain white space\php_script.php
 
Correct: c:\path\to\php.exe "c:\path\contain white space\php_script.php"
</pre>


== Related articles ==
== Related articles ==
* [https://www.computerhope.com/echohlp.htm MS-DOS echo command help]
* [https://ss64.com/nt/exit.html Exit - Terminate a script - Windows CMD - SS64.com]
* {{kbd | key=<nowiki>PAUSE</nowiki>}} at the end of file to prevent auto closing of console window after the execution of batch file. <ref>[https://www.computerhope.com/pausehlp.htm MS-DOS pause command help]</ref><ref>[https://stackoverflow.com/questions/988403/how-to-prevent-auto-closing-of-console-after-the-execution-of-batch-file windows - How to prevent auto-closing of console after the execution of batch file. - Stack Overflow]</ref>
* [https://coderwall.com/p/jexjlw/pause-on-error-in-batch-file Pause on error in Batch File (Example)]
* [http://php.net/getopt PHP: getopt - Manual]
* [http://php.net/getopt PHP: getopt - Manual]
* [[Boot up Tasks]] / [[Boot up Tasks#自動執行程式 | 自動執行程式]]
* [[Boot up Tasks]] / [[Boot up Tasks#自動執行程式 | 自動執行程式]]
* [[How to run a scheduled task in the background]]
* [https://errerrors.blogspot.com/2019/01/how-do-I-run-a-php-script-using-windows-system-scheduler.html 如何設定 Windows 排程自動執行 PHP 程式]
* [[A simple bat file template]]
== References ==
<references />


[[Category:Programming]] [[Category:PHP]]
[[Category:Programming]] [[Category:PHP]]

Latest revision as of 20:19, 8 January 2025

How to execute php script in a batch (bat) file


BAT and Bash File Examples[edit]

Example of BAT file for Windows[edit]

Condition 1: The DOS window was closed automatically when PHP script which implemented exit() and return error code 1.

@ECHO OFF
c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
if NOT ["%errorlevel%"]==["0"] (
    PAUSE
    exit /b %errorlevel%
)

Condition 2: The DOS window was NOT closed automatically. It might annoying if there are too many DOS window.

@ECHO OFF
c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1
c:\path\to\php.exe "c:\path\to\php_script2.php" -var2=value2
PAUSE

Example of BASH file for Linux[edit]

PHP script which implemented exit() and return error code 1[1][2][3].

#!/bin/bash
path/to/php "path/to/php_script.php" -var1=value1
if [ $? -eq 1 ]; then
  read -n 1 -s -r -p "Press any key to continue"
  exit 1
fi

Use cases[edit]

Case 1: Execute the PHP code directly[edit]

  1. Enter cmd to open Windows Command Line
  2. Enter the following command in Windows Command Line or save as BAT file:
c:\path\to\php.exe -r "echo 'Hello';"
  If you do not know where PHP installed, you may open the DOS window (cmd) and key in where php to find the path.

Case 2: Execute the PHP script file without passing parameters[edit]

c:\path\to\php.exe -f "c:\path\to\php_script.php"

or

c:\path\to\php.exe "c:\path\to\php_script.php"

Case 3: Execute the PHP script file passing parameters[edit]

c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -c=3

or

c:\path\to\php.exe "c:\path\to\php_script.php" -a=2


Options "-f <file> Parse and execute <file>."[4]


Run the PHP script automatically at a specified time[edit]

  • Good.gif Win   Using System Scheduler software & specify the path to bat file.
  • Win   Task Scheduler in Windows 10[5] (Windows 系統管理工具 → 工作排程器[6])
  • Linux   Cron

Troubleshootings[edit]

Error: The system cannot find the path specified.[edit]

c:\path\to\php.exe -f "c:\path\to\php_script.php"

Possible solutions: Check the php path if correct or not

dir c:\path\to\php.exe

Error: Could not open input file[edit]

Error message[7]: Could not open input file

The code caused the error message:

c:\path\to\php.exe -f "c:\path\to\php_script.php" -var1=value1

Possible solutions: (1) add double dash symbol -- after php script (2) remove -f option from command

c:\path\to\php.exe -f "c:\path\to\php_script.php" -- -var1=value1

or

c:\path\to\php.exe "c:\path\to\php_script.php" -var1=value1

(3) Enclose the whole path with double quote symbols

Wrong: c:\path\to\php.exe c:\path\contain white space\php_script.php

Correct: c:\path\to\php.exe "c:\path\contain white space\php_script.php"

Related articles[edit]

References[edit]