如何从命令行执行 PHP 代码?
我想直接使用命令行执行单个PHP语句,而不必使用单独的PHP文件。if(function_exists("my_func")) echo 'function exists';
这怎么可能?
我想直接使用命令行执行单个PHP语句,而不必使用单独的PHP文件。if(function_exists("my_func")) echo 'function exists';
这怎么可能?
如果你打算在命令行中做PHP,我建议你安装phpsh,一个不错的PHP shell。这更有趣。
无论如何,该命令提供了两个开关来从命令行执行代码:php
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
您可以使用 的 -r 开关:php
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
与phpsh相比,它有点蹩脚,但是如果您不想安装Facebook制作的令人敬畏的PHP交互式shell来获得选项卡完成,历史记录等,那么请使用-a:
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
如果它不能像在我的盒子上那样在你的盒子上工作(在Ubuntu和Arch Linux上测试),那么你的PHP设置可能是模糊的或坏的。如果运行以下命令:
php -i | grep 'API'
您应该看到:
Server API => Command Line Interface
如果不这样做,这意味着可能另一个命令将提供 CLI SAPI。试试 php-cli;也许它是操作系统中可用的软件包或命令。
如果您确实看到您的命令使用CLI(命令行界面)SAPI(服务器API),然后运行以找出哪个疯狂的开关 - 因为这已经一年没有改变 - 允许在您的版本/设置中运行代码。php
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 文件,例如 vs. 与。 在Gentoo Linux盒子上。找出哪个 ini 文件与 一起使用。/etc/php/cli/php.ini
/etc/php/cgi/php.ini
/etc/php/apache/php.ini
php -i | grep ini
在以下情况下使用 CLI 版本时,请代替在 Windows 上使用:"
'
-r
php -r "echo 1;"
php -r 'echo 1;'
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1
不要忘记用分号关闭该行(否则,结果是“PHP Parse 错误:语法错误,文件意外结束,在第 1 行的命令行代码中出现 ';' 或 ''”)。