我想if(function_exists("my_func")) echo 'function exists';
直接在命令行执行单个php语句,而不必使用单独的php文件。
这怎么可能 ?
我想if(function_exists("my_func")) echo 'function exists';
直接在命令行执行单个php语句,而不必使用单独的php文件。
这怎么可能 ?
Answers:
如果您要在命令行中使用PHP,建议您安装phpsh,这是一个不错的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相比,这有点la脚,但是如果您不想安装facebook制作的php真棒交互式shell来获取制表符的完成情况,历史记录等信息,请使用-a这样:
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
如果它不能像我的box * 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文件,例如/etc/php/cli/php.ini
vs /etc/php/cgi/php.ini
与vs /etc/php/apache/php.ini
在Gentoo盒子上。找出与哪个ini文件一起使用php -i | grep ini
。
在命令行上:
php -i | grep sourceguardian
如果在那里,那么您会得到一些文本。如果没有,您将一事无成。
.php
文件中? ”的问题?
您可以使用 :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
短标签“ <?= ”也可能有帮助:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
结束标记“?>”是可选的,但不要忘记最后一个“;” !
php -r
您无需担心打开PHP标记。