【问题标题】:PHP Version on the Command Line with MAMP for Windows带有 MAMP for Windows 的命令行上的 PHP 版本
【发布时间】:2015-02-27 14:09:18
【问题描述】:
我在家里的 Mac 上运行 MAMP,但在我的工作机器 (Win7) 上,我刚开始使用 MAMP for Windows,以便在两台机器之间运行相同的(相对而言)软件。我昨天从命令行运行了一些命令,并注意到脚本抛出错误,因为没有加载 mbstring 扩展名。我做了一些挖掘工作,现在只能摸不着头脑......
在浏览器中,一切正常。当我检查phpinfo 时,它正在加载配置文件并启用mbstring。但是,当我切换到命令行时,mbstring 不在模块列表中 (php -m)。另外,当我执行php --ini 时,它告诉我没有加载任何配置文件。我已将正确的 PHP 版本添加到我的 PATH 并运行 php -v 为我提供了我期望的版本,所以我不确定为什么命令行上的 PHP 与浏览器中的 PHP 行为不同。
以前有人遇到过这种情况吗?如何让 PHP 在命令行上加载浏览器正在使用的相同配置文件?
【问题讨论】:
标签:
php
command-line
mamp
mamp-pro
【解决方案1】:
命令行 php (CLI) 是与 CGI PHP 不同的可执行文件。它通常还使用不同的 php.ini 文件。但是,您可以在启动 php cli 时指定要加载的 php.ini 的位置:
php -c <path to your php.ini>
看看here。
【讨论】:
-
对于其他查看此内容的人,php -c 用于一次性执行。如果您想让它每次都能正常工作,this answer 应该为您指明正确的设置方向,这样您就不必在个人资料中使用别名 php。
【解决方案2】:
本示例假设您使用 C:\MAMP\ 作为安装目录。
由于您需要在 Windows MAMP 中使用的配置,您需要将其作为参数提供给 php。
打开命令提示符。
使用 MAMP 中的 PHP5.6.0 使用位于 C:\MAMP\htdocs\ 中的脚本执行 test.php:
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