如果你要在命令行中做PHP,我建议你安装phpsh, a decent PHP shell。它更有趣。
无论如何,php 命令提供了两个开关来从命令行执行代码:
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> 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
它与phpsh相比有点蹩脚,但如果你不想安装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 Linux 上测试),那么可能您的 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 Linux 框上的 /etc/php/cli/php.ini 与 /etc/php/cgi/php.ini 与 /etc/php/apache/php.ini。找出与php -i | grep ini 一起使用的ini 文件。