我想if(function_exists("my_func")) echo 'function exists';直接使用命令行执行单个 PHP 语句,而无需使用单独的 PHP 文件。
if(function_exists("my_func")) echo 'function exists';
这怎么可能?
如果你打算在命令行中做 PHP,我建议你安装 phpsh,一个不错的 PHP shell。这更有趣。
无论如何,该php命令提供 了两个开关来从命令行执行代码 :
php
-r <code> Run PHP <code> without using script tags <?..?> -R <code> Run PHP <code> for every input line
您可以像这样使用php‘s -r 开关 :
php -r 'echo function_exists("foo") ? "yes" : "no";'
如您所见,上面的 PHP 命令应该 输出 no并 返回: 0
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 >
如果它不能 像在我的盒子 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 -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 文件 ,例如,/etc/php/cli/php.ini与在Gentoo Linux/etc/php/cgi/php.ini机器上的对比。找出与./etc/php/apache/php.iniphp -i | grep ini
/etc/php/cli/php.ini
/etc/php/cgi/php.ini
/etc/php/apache/php.ini
php -i | grep ini