如何从命令行执行PHP代码?

问题:

我想直接用命令行执行一个像if(function_exists("my_func")) echo 'function exists';这样的php语句,而不必使用单独的php文件。
这怎么可能 ?

回答:

 如果你打算在命令行中执行PHP,我建议你安装更有趣。
无论如何,php命令提供两个开关从命令行执行代码

-r 
        Run PHP 
 without using script tags <?..?>
-R 
        Run PHP 
 for every input line

你可以使用php的-r开关

php -r 'echo function_exists("foo") ? "yes" : "no";'

上面的PHP命令应该是产量 no回报 0,你可以看到:

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

另一个有趣的开关是php -a

-a               Run as interactive shell

它是比较蹩脚,但是如果您不想安装the awesome interactive shell for php made by facebook to get tab completion, history, and so on,那么使用-a就这样

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php > 

 如果它不起作用放在您的盒子上,就像我的盒子上的* es *(测试在Ubuntu和Arch上),然后是可能你的PHP设置是模糊的或者是坏的。如果你运行这个命令:

php -i | grep 'API'

应该看到:

Server API => Command Line Interface

 如果你不这样做,这意味着也许另一个命令将提供CLI SAPI。尝试php-cli,也许这是一个包或在您的操作系统中可用的命令。
 如果你这样做请参阅您的php命令使用CLI(命令行界面)SAPI(服务器API),然后运行php -h | grep code找出哪一个疯狂的开关 - 因为这一年没有改变 - 允许在您的版本/设置中运行代码。
另外几个例子,只是为了确保它在我的盒子上工作:

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' 
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";' 
yes

另外请注意,可能在CLI中加载了扩展,而不是在CGI或Apache SAPI中加载。 几个PHP SAPI可能使用不同的php.ini文件,例如在Gentoo框上/etc/php/cli/php.ini/etc/php/cgi/php.ini/etc/php/apache/php.ini。找出哪个ini文件与php -i | grep ini一起使用

 
 
Code问答: http://codewenda.com/topics/php/
Stackoverflow: How to execute PHP code from the command line?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 4 = 1