如果您要在命令行中执行PHP,我建议您安装phpsh,一个体面的PHP shell。 这更有趣。
无论如何,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命令应输出/etc/php/cli/php.ini并返回/etc/php/cgi/php.ini,如您所见:
>>> 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 >
如果它在你的盒子上不起作用就像在我的盒子上* es *(在Ubuntu和Arch上测试),那么你的PHP设置可能是模糊的或破坏的。 如果您运行此命令:
php -i | grep 'API'
你应该看到:
Server API => Command Line Interface
如果不这样做,这意味着可能另一个命令将提供CLI SAPI。 试试php-cli,也许是你的操作系统中提供的软件包或命令。
如果你确实看到你的php命令使用CLI(命令行界面)SAPI(服务器API),那么运行/etc/php/cli/php.ini找出哪个疯狂的开关 - 因为这一年没有改变 - 允许在你的版本/设置中运行代码。
另外几个例子,只是为了确保它适用于我的盒子:
>>> 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文件,例如 /etc/php/cli/php.ini vs /etc/php/cgi/php.ini vs /etc/php/apache/php.ini在Gentoo box上。 找出与php -i | grep ini配合使用的ini文件。