首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac Pro PHP配置

Mac Pro PHP配置
EN

Stack Overflow用户
提问于 2015-02-19 16:16:51
回答 1查看 3.8K关注 0票数 1

我的Mamp有一个php cli命令问题。我的问题是,php脚本中的exec和终端中的exec是不同的。我解释:

  1. 当我执行这个命令时,=> 哪个php mac终端中的 我得到了这个路径: /Applications/MAMP/bin/php/php5.6.2/bin/php

这很正常,因为我更改了.bash_profile文件中的路径,如下所示:

出口MAMP_PHP=/Applications/MAMP/bin/php/php5.5.18/bin PATH= PATH="$MAMP_PHP:$PATH“

导航器中的

在php脚本中使用这一行:

我得到了这个路径: /usr/bin/php

  1. 相同的结果,但更详细地使用命令=> php -ini。 mac终端中的 配置文件(php.ini)路径:/php.ini/MAMP/bin/php/php5.5.18/conf加载的配置文件:在:(无)解析的其他.ini文件中扫描其他.ini文件:(无) 导航器中的 配置文件(php.ini)路径: /etc加载的配置文件: /etc/php.ini扫描以下文件中的其他.ini文件:/Library/Server/ .ini /Config/php解析的其他.ini文件:/Library/服务器/.ini/php/php.ini
  2. 更奇怪的是,在编写包含以下代码的php文件时:<?php var_dump(shell_exec("which php -v")); phpinfo(); ?>和我在终端和导航器中启动这个脚本。我拿到了这个: mac终端中的 使用: php -f /Users/tm/Sites/test.com/test.php 结果:/Applications/MAMP/bin/ PHP /php5.18/bin/PHP PHP版本=> 5.5.18 导航器中的 结果: /usr/bin/php PHP版本=> 5.5.18

因此,从导航器启动的php脚本似乎使用了正确的php版本,因为php info返回正确的版本(5.5.18),但是这个php脚本的cli使用另一个php,这是我的问题。但是,当这个脚本从终端启动时,一切都如期而至。

EN

回答 1

Stack Overflow用户

发布于 2018-10-24 19:12:46

您遇到的问题是,Apache没有使用与您的用户帐户下的Mac终端相同的基于BASH的路径配置。换句话说,您通过配置特定的登录用户.bash_profile条目来设置的“路径”值是特定于您的用户的BASH (终端)进程的,而您的web运行页面是在Apache下运行的(即它不加载用户帐户的BASH设置)。

如果要使用exec(),使用相同的二进制文件(基于每个PHP脚本)的简单方法是这样做:

代码语言:javascript
复制
<?php 
    echo "Default PHP path: " . exec('which php') . PHP_EOL;
    $current_path = exec('echo $PATH');
    $your_custom_php_path = '/Applications/MAMP/bin/php/php5.5.18/bin';
    putenv('PATH=' . $your_custom_php_path . ':' . $current_path);
    echo "New PHP path: " . exec('which php') . PHP_EOL;
?>

(注意:上面的脚本是为shell输出格式化的,而不是为web输出设置的,以换行)。

这基本上是将PHP脚本动态配置为(并使用)与在BASH中使用的相同路径设置值,但在Apache运行PHP脚本的上下文中。

完成同样的事情还有其他的方法(Apache级别的吐露,等等)--但希望这能解释为什么你看到了不同的价值观,并给了你一种解决问题的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28611329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档