Execute php script in a bat file: Difference between revisions

m Text replacement - ": Image:Owl icon.jpg " to "{{Tips}} "
 
(13 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 code directly ==
 
== 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 {{kbd | key=cmd}} to open Windows Command Line
# Enter the following command in Windows Command Line or BAT file:
# Enter the following command in Windows Command Line or save as BAT file:


<pre>
<pre>
Line 10: Line 43:
</pre>
</pre>


: [[Image:Owl icon.jpg]] If you do not known where is the path of php, you may open the DOS window ({{kbd | key=<nowiki>cmd</nowiki>}}) and key in {{kbd | key=<nowiki>where php</nowiki>}} to obtain the path of php.
{{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 ==
=== 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 21: Line 54:
</pre>
</pre>


== Case 3: Execute the PHP script file 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>
 
== Example bat file ==
Condition 1: The DOS window was NOT 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>


== Run the PHP script automatically at a specified time ==
== Run the PHP script automatically at a specified time ==
Line 76: Line 91:
</pre>
</pre>


Possible solutions: (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 91: Line 106:
Correct: 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>
</pre>


== Related articles ==
== Related articles ==
Line 100: Line 114:
* [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 程式]
* [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 ==