PHP 使用 MAMP 的命令行版本 Windows

PHP Version on the Command Line with MAMP for Windows

我 运行 在家里的 Mac 上使用 MAMP,但在我的工作机器 (Win7) 上我刚开始使用 MAMP Windows 所以我 运行 在两台机器之间安装相同的(相对而言)软件。昨天我从命令行 运行 执行了一些命令,发现脚本抛出错误,因为 mbstring 扩展没有加载。我做了一些挖掘,现在我挠头了......

在浏览器中,一切正常。当我检查 phpinfo 时,它正在加载配置文件并且 mbstring 已启用。但是,当我切换到命令行时,mbstring 不在模块列表中 (php -m)。另外,当我执行 php --ini 时,它告诉我没有加载配置文件。我已经将正确的 PHP 版本添加到我的 PATH 并且 运行ning php -v 给了我我期望的版本,所以我不太确定为什么 PHP 在命令中行在浏览器中的行为与 PHP 不同。

有没有人运行以前参与过这个?如何使命令行上的 PHP 加载浏览器正在使用的相同配置文件?

命令行 php (CLI) 是不同于 CGI PHP 的可执行文件。它还通常使用不同的 php.ini 文件。但是,您可以在启动 php cli:

时指定要加载的 php.ini 的位置
php -c <path to your php.ini>

看看here.

此示例假设您使用 C:\MAMP\ 作为安装目录。

由于您需要在 Windows MAMP 中使用的配置,因此您需要将其作为参数提供给 php。

打开命令提示符。

要使用位于 C:\MAMP\htdocs\ 的脚本执行 test.php,方法是使用来自 MAMP 的 PHP5.6.0:

C:\MAMP\bin\php\php5.6.0\php.exe -c "C:\MAMP\conf\php5.6.0\php.ini" "C:\MAMP\htdocs\test.php"

如您所见,最后一个参数是要执行的脚本 ("C:\MAMP\htdocs\test.php")。

要从命令行执行 phpinfo:

C:\MAMP\bin\php\php5.6.0\php.exe -c "C:\MAMP\conf\php5.6.0\php.ini" -r phpinfo();

phpinfo 输出中应该有一行确认您正在使用来自 C:\MAMP\conf\php5.6.0\php.ini.

的配置

加载的配置文件=> C:\MAMP\conf\php5.6.0\php.ini