我在家里的Mac上运行MAMP,但在我的工作机器(Win7)上,我刚刚开始使用MAMP for Windows,所以我在两台机器之间运行相同的(相对而言)软件。昨天,我从命令行运行了一些命令,注意到由于没有加载mbstring
扩展,脚本出现了错误。我挖了一些东西,现在却在挠头。。。
在浏览器中,一切正常。当我检查phpinfo
时,它正在加载配置文件,并且mbstring
已启用。当我切换到命令行时,mbstring
不在模块列表中(php -m
)。此外,当我执行php --ini
时,它会告诉我没有加载任何配置文件。我已经将正确的PHP版本添加到了我的PATH中,并且运行php -v
可以得到我期望的版本,所以我真的不确定为什么命令行上的PHP与浏览器中的PHP不同。
以前有人碰到过这个吗?如何使PHP在命令行上加载与浏览器正在使用的配置文件相同的配置文件?
命令行php(CLI)与CGI php是不同的可执行文件。它通常还使用不同的php.ini文件。但是,您可以指定在启动php-cli:时要加载的php.ini的位置
php -c <path to your php.ini>
看看这里。
本例假设您使用C:''MAMP''作为安装目录。
由于您需要Windows MAMP中使用的配置,因此需要将其作为参数提供给php。
打开命令提示符。
要使用位于C:''MAMP''htdocs''中的脚本执行test.php,请使用MAMP:中的PHP56.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