【问题标题】:php -v and php-fpm -v show different versions of phpphp -v 和 php-fpm -v 显示不同版本的php
【发布时间】:2019-02-08 21:34:56
【问题描述】:

我整晚都在为此苦苦挣扎,找不到解决问题的答案!

我在 Mac 上使用自制软件安装 php 和 nginx,我运行以下显示成功

brew install php
brew install nginx

到目前为止没有问题,我可以启动两个服务

brew services start nginx
brew services start nginx

当我运行 brew services list 时,我得到以下信息

nginx started me /Users/me/Library/LaunchAgents/homebrew.mxcl.nginx.plist
php   started me /Users/me/Library/LaunchAgents/homebrew.mxcl.php.plist

但是,当尝试运行 Wordpress 站点时,我的 nginx 日志中出现以下错误

[error] 26099#0: *1 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:8080"

我已经用谷歌搜索了这个问题,似乎这通常是 nginx 将请求传递给 php-fpm 的问题,我检查了运行每个服务的用户以确保它们匹配,我和我都这样做了两个root都无济于事。 当我检查“brew services list”时,它以橙色显示 php,我理解这意味着它实际上已经失败。

我进一步挖掘,似乎如果我运行 'php -v' 我得到了

PHP 7.2.9 (cli) (built: Aug 23 2018 02:08:27) ( NTS )

但如果我运行 'php-fpm -v' 我会得到:

PHP 7.1.16 (fpm-fcgi) (built: Mar 31 2018 03:00:16)

我相信这给我带来了问题,我已经用谷歌搜索了它,但没有得到任何明确的修复。

这是另一个奇怪的地方:

$which php
/usr/local/bin/php
$which php-fpm
/usr/sbin/php-fpm

有没有人知道如何解决这个问题?

提前致谢!

【问题讨论】:

  • 有什么理由需要在 mac os 上安装它吗?这是为了本地发展吗?为什么不使用 docker?
  • 仅供参考,/usr/local/binhomebrew 安装的,而 /usr/sbin/php-fm 是 Apple 随 macOS 提供的。
  • 也许在文档根目录中创建一个调用phpinfo() 的PHP 页面,看看nginx 如何查看您的PHP 设置。
  • @amurell 请停止要求人们使用 docker。这个问题是完全合法的,完全一样,关于它的上下文你没有什么可讨论的。
  • 感谢到目前为止的所有帮助@amurrell 我还不想使用 docker,因为我不太了解它,也不喜欢一次学习很多东西!我发现 homebrew 在哪里安装 php-fpm /usr/local/Cellar/php/7.2.9_2/sbin/php-fpm 所以我想我现在的问题是如何将 php-fpm 命令绑定到这个位置而不是标准位置?

标签: php macos nginx homebrew


【解决方案1】:

对我来说,安装 php(不是用 brew)后我有以下架构,但也许这无论如何都会有所帮助......

ls /etc/php/
5.6  7.0  7.1  7.2

如果我输入 php 和 tab,我可以使用以下命令:

php            php-config     php-config7.2  php-fpm7.2     php7.2         phpdismod      phpenmod       phpize         phpize7.2      phpquery

我有一个专门为php-fpm7.2 运行的服务,如下所示:

sudo service php7.2-fpm status
 * php-fpm7.2 is running
root@xxx:~# sudo service php5.6-fpm status
php5.6-fpm: unrecognized service
root@xxx:~# sudo service php7.1-fpm status
php7.1-fpm: unrecognized service

您使用 php 获得不同版本的事实是因为这是在命令行中运行的 php 版本 - 它具有与使用 fpm(从 nginx 传递)时发生的设置不同的设置。我认为 CLI php 与您的 fpm 版本没有太大关系。可能是 brew 的 php 存储库仅在 fpm 7.16 上是最新的。我想我可能是从 ppa 安装我的 PHP,但我想不起来。

【讨论】:

  • 您可以尝试 brew install php@7.2 - 但我不确定,因为我不使用 mac...
  • 这看起来可能是我唯一的选择,因为试图让它工作又浪费了一个晚上,我在 Mac 上不是很好,所以如果这是一个简单的问题,我很抱歉,但我该如何设置提供服务? (我很快就谷歌了,但没走多远)
【解决方案2】:

好的,我现在让 php -vphp-fpm -v 返回相同的 php 值,我通过运行 brew doctor 来做到这一点,它告诉我运行 echo 'export PATH="/usr/local/sbin/:$PATH"'

所以现在我运行了相同的版本,并且可以使用lsof -i | grep php-fpm 确认 php-fpm 正在运行而不会失败,我遇到了人们在他们的 mac 书籍上安装 php 和 nginx 的正常问题!所以今晚我可以高枕无忧了,因为我知道我离目标稍微近了一点!

我现在也有以下

$ which php-fpm
/usr/local/sbin/php-fpm
$ which php
/usr/local/bin/php

感谢大家的宝贵时间和建议:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2021-04-10
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多