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}} ")
 
(9 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 ==


# Enter {{kbd | key=cmd}} to open Windows Command Line
== BAT and Bash File Examples ==
# Enter the following command in Windows Command Line or save as BAT file:
=== 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>
c:\path\to\php.exe -r "echo 'Hello';"
</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.
 
== Case 2: Execute the PHP script file without passing parameters ==
<pre>
c:\path\to\php.exe -f "c:\path\to\php_script.php"
 
or
 
c:\path\to\php.exe "c:\path\to\php_script.php"
</pre>
 
== Case 3: Execute the PHP script file passing parameters ==
<pre>
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
</pre>
 
 
Options "-f <file>        Parse and execute <file>."<ref>[http://php.net/manual/en/features.commandline.options.php PHP: Options - Manual]</ref>
 
== Example of 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>
<pre>
@ECHO OFF
@ECHO OFF
Line 52: Line 22:
</pre>
</pre>


 
=== Example of BASH file for Linux ===
== Example of bash file ==
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>.
PHP script which implemented [http://php.net/manual/en/function.exit.php exit()] and return error code 1<ref>[https://www.tldp.org/LDP/abs/html/comparison-ops.html Other Comparison Operators]</ref>.
<pre>
<pre>
#!/bin/bash
#!/bin/bash
Line 63: Line 32:
fi
fi
</pre>
</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>
c:\path\to\php.exe -f "c:\path\to\php_script.php"
or
c:\path\to\php.exe "c:\path\to\php_script.php"
</pre>
=== Case 3: Execute the PHP script file passing parameters ===
<pre>
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
</pre>
Options "-f <file> Parse and execute <file>."<ref>[http://php.net/manual/en/features.commandline.options.php PHP: Options - Manual]</ref>


== Run the PHP script automatically at a specified time ==
== Run the PHP script automatically at a specified time ==
Line 88: 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 103: 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 112: 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 ==

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]