MacOS更新到High Sierra之后,PHP无法正常工作

时间:2017-09-26 22:13:00

标签: php linux macos apache

我将我的mac更新到最新版本的操作系统。当我尝试运行PHP项目时,浏览器显示php代码而不是解释它。我注意到在新的操作系统中,php是在7.1版本中。我在httpd.conf中使用自制程序和更改模块安装了5.6(我需要它):

  

LoadModule php5_module   /usr/local/Cellar/php56/5.6.31_7/libexec/apache2/libphp5.so

这里的apache错误日志:

  

[Tue Sep 26 23:59:38.600410 2017] [mpm_prefork:notice] [pid 980]   AH00169:关闭SIGTERM,关闭[Tue Sep 26 23:59:38.622998   2017] [核心:通知] [pid 980] AH00060:段错或类似讨厌   在父进程AH00557中检测到错误:httpd:   MacBook-Pro-Kamil.local AH00558的apr_sockaddr_info_get()失败:   httpd:无法可靠地确定服务器的完全限定   域名,使用127.0.0.1。设置' ServerName'全球指令   取消此消息[Tue Sep 26 23:59:48.838005 2017]   [mpm_prefork:notice] [pid 991] AH00163:Apache / 2.4.27(Unix)   配置PHP / 5.6.31 - 恢复正常操作[Tue Sep 26   23:59:48.838097 2017] [核心:通知] [pid 991] AH00094:命令行:   ' / usr / sbin / httpd -D FOREGROUND'

8 个答案:

答案 0 :(得分:4)

将以下行添加到我的httpd.conf文件中修复了问题:

AddType x-httpd-php .php
AddHandler application/x-httpd-php .php .php5

希望这有帮助!

编辑:只是为了提供更多细节,正如crmpicco建议的那样,我还用我的旧Sierra这样的文件取代了新的High Sierra httpd.conf和httpd-vhosts.conf文件:

mv httpd-vhosts.conf~previous httpd-vhosts.conf
mv httpd.conf~previous httpd.conf

即使在完成所有这些并重新启动Apache之后,它仍然无法正常工作 - 必须重新启动才能使所有内容生效。

答案 1 :(得分:3)

MacOS升级过程似乎将您的Apache配置转移到~previous文件中,同时创建新的新版本。你只需要将它们移回去。这对我有用:

mv httpd-ssl.conf~previous httpd-ssl.conf
mv httpd-vhosts.conf~previous httpd-vhosts.conf
mv httpd.conf~previous httpd.conf

检查语法。

apachectl -S

重启Apache。

apachectl restart

答案 2 :(得分:1)

将PHP5.6与HighSierra一起使用

  1. 启用共享Apache Handler模​​块的构建 确保安装了最新版本的PHP56并启用了http选项(根据需要安装/升级/重新安装)

    $ brew upgrade php56 --with-httpd

  2. 在Apache2配置文件中链接模块 在apache2配置文件/etc/apache2/httpd.conf

    中添加以下语句

    LoadModule php5_module /usr/local/Cellar/php56/5.6.32_8/libexec/apache2/libphp5.so

  3. 添加PHP5配置文件

    从php7.conf

    制作副本

    $ cd / etc / apache2 / other; sudo cp php7.conf php5.conf

    将php7_module替换为php5_module

  4. 重启Apache服务器

    $ sudo / usr / sbin / apachectl restart

答案 3 :(得分:0)

看起来您的问题不在于PHP,而在于您的计算机的域名。请注意消息“无法使用127.0.0.1可靠地确定服务器的完全限定域名。全局设置'ServerName'指令以禁止显示此消息。检查您的域设置httpd.conf文件。您还应该检查/ etc / hosts文件中是否存在任何冲突。

This guide for installing and using Apache/MySQL/PHP via Homebrew has been immensely useful.它适用于macOS Sierra,但也适用于High Sierra。它还将向您展示如何安装多个PHP版本以及在它们之间来回切换的便捷方式(如果您感兴趣的话)(或者仅保留一个PHP版本)。

我喜欢使用Homebrew路线而不是Vagrant或MAMP,因为它更接近本机安装并且使用更少的资源。希望有所帮助!

答案 4 :(得分:0)

这里使用MAMP和php 5.6同样的事情:刚刚更新到High Sierra(可能是一个带有太多杂草的Sierra).Apache2停止工作。

几小时后我终于用这个命令解决了:

cp /Applications/MAMP/bin/php/php5.6.25/conf/php.ini.temp /Applications/MAMP/bin/php/php5.6.25/conf/php.ini

并将我的自定义更改重新应用到php.ini。 (在我的例子中是memory_limit和short_open_tag)

重新启动MAMP,它在第一次尝试时起作用。

答案 5 :(得分:0)

添加

LoadModule php5_module /usr/local/Cellar/php56/5.6.31_7/libexec/apache2/libphp5.so

你必须添加

<IfModule mod_php5.c>
# If php is turned on, we respect .php and .phps files.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

# Since most users will want index.php to work we
# also automatically enable index.php
<IfModule mod_dir.c>
    DirectoryIndex index.html index.php
</IfModule>

到你的

/etc/apache2/httpd.conf

别忘了

apachectl restart

答案 6 :(得分:-1)

我也查看了自制选项,最后我决定使用Vagrant。您可以将项目文件保留在原来的位置,并使用vagrant进行本地服务。我使用laravel / homestead盒子按照https://laravel.com/docs/5.5/homestead和Homestead.yaml上的指南 - 你可以使用相同的盒子进行laravel和wordpress等。它也是未来osx升级的未来证明,你可以很容易按网站选择网站上的php版本

folders:
    - map: ~/Documents/www/mysite/
      to: /home/vagrant/mysite
      type: "nfs"
sites:
    - map: mysite.app
      to: /home/vagrant/mysite/dist
      php: "5.6"

并在/ etc / hosts / add

192.168.10.10 mysite.app

答案 7 :(得分:-2)

您可以下载支持PHP 5.6.31的Xampp版本,并使用Xampp运行您的应用程序。

如果您不想这样做,我认为您需要回到MacO Sierra,请记住PHP 5.6已经过时了,新系统将推出最新版本!