当前位置: 首页 > 面试题库 >

如何从命令行执行PHP代码?

羊舌子瑜
2023-03-14
问题内容

我想if(function_exists("my_func")) echo 'function exists';直接在命令行执行单个php语句,而不必使用单独的php文件。

这怎么可能 ?


问题答案:

如果您要在命令行中使用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.inivs /etc/php/cgi/php.ini与vs
/etc/php/apache/php.ini在Gentoo盒子上。找出与哪个ini文件一起使用php -i | grep ini



 类似资料:
  • 我没有得到“你好”:请想知道为什么和做什么

  • 我遵循以下指示https://code.visualstudio.com/docs/setup/mac但我没有成功。这就是我进去时发生的事情 我得到了以下信息: 我还查找了以下问题:如何在OSX上从命令行打开Visual Studio代码?,这没用。 我在VSCode中只有一个终端选项,zsh。

  • 我试图在我的网页中使用PHP从远程机器中的shell获得结果。我用了这些台词: 我试图得到结果在我的网页在windows机器和libssh2已经包含在easyphp. 有什么想法吗?

  • 问题内容: 我有一个配置了执行的插件(antrun),该插件具有一个id,并且未绑定到任何阶段。我可以直接从命令行执行此执行吗? 用以下命令运行它: 或者至少 问题答案: 133 此功能已实现为MNG-5768,并且在Maven 3.3.1中可用。 更改将: 扩展直接插件调用语法,以允许可选的@ execution-id参数,例如org.apache.maven.plugins:maven-rem

  • 问题内容: 当前,在用于创建用于分发代码的jar的工作流中,我: 在Eclipse中右键单击我的项目 选择“导出” 选择“ JAR文件” 取消选中顶级文件,例如.classpath,.project 仅检查“导出生成的类文件” 点击“完成” 这样可以确保.class文件是最新的并创建jar。我想从命令行执行相同的操作,但是大多数用于创建jar的文档似乎只是在破坏已经存在的文件,而没有创建.clas

  • 我试图从maven命令行运行一个类,但得到以下错误。不知道我错过了什么。有谁能引导一下吗? pom.xml