93

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

我有一个phpinfo.php可以从已安装的网络节目访问的文件German。但是,如果我使用 -和forphpinfo.php从命令行运行,我找不到它。所以两个 PHP 文件是不同的。我需要运行一个安装了它的脚本。php phpinfo.phpgrepGermanphpGerman

我怎样才能做到这一点?

4

3 回答 3

178

您应该检查您的服务器配置文件。查找以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 ( FastCGI Process Manager ) 运行 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 套接字文件。

于 2012-04-21T20:15:23.257 回答
3

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

如果您的操作系统相似,那么这两个文件可能不一样。您的 Apache php.ini可能正在加载德语模块,而 CLI php.ini没有。安装模块时(自动或手动),它可能只更新了 Apache php.ini文件。

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

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

于 2017-05-17T18:54:54.043 回答
3

我一直在寻找Windows中这个问题的解决方案,似乎是如果你没有环境变量ok,你需要放置完整的目录。例如,与 PHP 在同一目录中的文件:

F:\myfolder\php\php.exe -f F:\myfolder\php\script.php
于 2019-02-20T19:17:41.223 回答