【问题标题】:PHP upgrade issuesPHP 升级问题
【发布时间】:2017-04-05 15:03:37
【问题描述】:

我正在运行装有 macOS Sierra 10.12.3 的 MacBook Air。我根据this site 将我的 PHP 从 5.x 升级到 7.1.1,现在我遇到了两个问题:

a) PHP 进程启动大约需要 7 秒,即使 php -v 打印 PHP 的版本也是如此。编辑:已解决。

b) Apache 不再在本地提供我的页面。 Chrome 只显示带有“ERR_CONNECTION_REFUSED”的通用错误页面。我已经重新启动了 apache 服务,但真的不知道还能做什么。 apache vhosts 配置文件以前工作过,看起来仍然不错。编辑:apache 错误日志中也没有任何内容。

编辑:系统日志显示 (org.apache.httpd[71685]): Service exited due to signal: Segmentation fault: 11 sent by exc handler[0] (org.apache.httpd): Service only ran for 5 seconds. Pushing respawn out by 5 seconds

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

【问题讨论】:

  • 看看你的apache错误日志,那里可能有线索。
  • @aynber 谢谢,我忘了说,apache重启后没有条目
  • 此错误可能是 DNS 或 IP 错误:ERR_CONNECTION_REFUSED,尝试删除 Chrome 中的所有内容并重新开始。
  • @Soheyl 在 Firefox 和 Safari 中出现同样的错误。在控制台中 Ping 该 URL 显示 127.0.0.1。
  • 其他日志、系统日志等中的任何内容?

标签: php macos apache


【解决方案1】:

现在解决了。

Apache 的问题是在 /etc/apache2/other/+php-osx.conf 中创建了一个额外的配置文件来加载 php7.1 模块,但 /etc/apache2/httpd.conf 中的 php5 模块加载没有被禁用。

加载明显崩溃的 apache 并在 httpd.conf 中注释掉 LoadModule 解决了它。我不知道为什么安装例程没有这样做。

谢谢大家帮助我。

【讨论】:

  • 我正要链接提到这一点的页面,但很高兴看到它已修复。
  • 哦,伙计……我花了很多时间试图解决这个问题。谢谢我爱你!
  • OSX 更新把所有的 conf 文件弄得一团糟,到处都是 .conf.previous 文件。这太疯狂了
  • 哇!太感谢了。我只是想不通为什么 php5 仍在加载!
【解决方案2】:

https://php-osx.liip.ch 是一个不错的站点,我以前使用它来升级我的php 安装。我发现有时它会不值得信任,有时会破坏我的安装。 编辑 该站点上使用的脚本在运行时通常会编译 PHP,这可能会导致一些有趣的怪癖和不一致。所以我改用brew

Brew 是一款适用于 Mac 的便捷工具,其工作方式与 apt-getyum 非常相似。我建议你试试这个,它以一种允许你从机器中清除它们并恢复到旧版本的方式添加库。

$ brew search php71
# lists all the matches for php71, you will find "homebrew/php/php71"

$ brew install homebrew/php/php71
# installs php71, it will give you some good instructions if there are errors
# typically some permission errors, but it gives commands to run too

$ brew link homebrew/php/php71
# overrides the local php command with "homebrew/php/php71"

$ php -v
PHP 7.1.1 (cli) ...

然后我建议查看内置的PHP Local Server,如果它仍然无法正常工作。虽然我 99% 确信您的问题会得到解决。

以后升级您的 php 版本就像再次执行上述操作一样简单,php71 是您的新版本(例如 php727.2)。删除旧版本很容易,但不会造成任何伤害,并且允许您使用单个命令行选项快速切换版本。

【讨论】:

  • 谢谢,解决了php启动需要7秒的问题,可惜apache服务一直崩溃。
  • 不幸的是,命令行网络服务器不处理虚拟主机重写,因此不是一个选项,但可以正常工作
  • 嗯,你重启httpd服务了吗? sudo /usr/sbin/apachectl restart
  • 很多次,但我现在解决了,请看我的回答。
  • 我接受了你的回答,因为它解决了 (a) 问题,让我走上了正确的道路,我很高兴你能加入!
猜你喜欢
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 2014-08-17
  • 2011-10-24
  • 1970-01-01
  • 2011-09-23
相关资源
最近更新 更多