从命令行运行PHP脚本


83

如何使用用于解析Web脚本的PHP解释器从命令行运行PHP脚本?

我有一个phpinfo.php文件,可以从German安装的Web显示中访问。但是,如果我phpinfo.php使用-php phpinfo.phpgrepfor从命令行运行,则German找不到它。因此,两个php都不相同。我需要运行该脚本phpGerman安装。

我怎样才能做到这一点?


1
只是做php -i和解析
劳伦斯·谢罗内

1
那是什么意思?我这样做,不过,但没有
亚洲时报Siddharth

1
请添加有关已安装的Web服务器软件的更多详细信息,例如,将输出添加phpinfo();到您的问题中。还更新了我的答案。
Sampo Sarrala-codidact.org 2012年

Answers:


162

更新:

经过误会,我终于明白了你要做什么。您应该检查服务器配置文件;您在使用apache2或其他服务器软件吗?

寻找以LoadModule php...开头的行。可能有mods从那里开始的配置文件/目录,或者类似的名称。

您还可以检查Web服务器的输出php -r 'phpinfo();' | grep php并将行phpinfo();与Web服务器进行比较。

php交互式运行:

(因此您可以在控制台中粘贴/编写代码)

php -a

使其解析文件并输出到控制台:

php -f file.php

解析文件并输出到另一个文件:

php -f file.php > results.html

你需要别的东西吗?

要只运行一小部分,一行或类似内容,可以使用:

php -r '$x = "Hello World"; echo "$x\n";'

如果您正在运行linux,请man php在控制台上执行。

如果您需要/想要通过fpm运行php,请使用cli fcgi

SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"

其中/var/run/php-fpm/php-fpm.sock是您的php-fpm套接字文件。


4
不。问题是系统上有多个php。我需要找出哪个php用于解析Web脚本。如果我从控制台运行php,则找不到类-但是,如果我从网络调用该脚本,则该问题就不存在了。因此,这意味着所使用的PHP是不同的,不是吗?
Siddharth 2012年

2
@Siddharth您应该从服务器的软件配置中进行检查。将您的服务器详细信息添加到问题。
Sampo Sarrala-codidact.org 2012年

2
是。我该如何检查?简而言之,如何从命令行使用正确的PHP?
Siddharth 2012年

2
在Linux中,您可以which php用来告诉您默认情况下正在运行哪个可执行文件。要使用其他可执行文件,您必须指定要使用的可执行文件的完整路径:/path/to/specific/php -f file.php > results.html
Emilio P.

1
细节不错,+ 1可以解释。只是在这里发表评论,请注意环境vars,即使脚本与php.exe在同一目录中,也可能需要使用完整的目录路径
Leandro

3

我正在Windows中寻找解决此问题的方法,似乎如果您没有vars好的环境,则需要放置完整的目录。例如。文件位于与PHP相同的目录中:

F:\myfolder\php\php.exe -f F:\myfolder\php\script.php

如果从命令提示符>处逐字运行,开始时可能会重定向-f ...(可能是错误)输出到php.exe文件中,并清除内容。
mwfearnley

2

在SuSE上,有两个用于PHP的不同配置文件:一个用于Apache,一个用于CLI(命令行界面)。在/ etc / php5 /目录中,您将找到“ apache2”目录和“ cli”目录。每个都有一个“ php.ini”文件。这些文件具有相同的目的(php配置),但适用于运行PHP的两种不同方式。这些文件除其他外,将加载PHP使用的模块。

如果您的操作系统相似,则这两个文件可能不相同。您的Apache php.ini可能正在加载gearman模块,而cli php.ini则没有。安装模块(自动或手动)后,它可能仅更新了Apache php.ini文件。

您可以简单地将Apache php.ini文件复制到cli目录中,以使CLI环境与Apache环境完全相同。

或者,您可以在Apache文件中找到加载gearman模块的行,然后将其复制/粘贴到CLI文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.