我将我的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'
答案 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一起使用
启用共享Apache Handler模块的构建 确保安装了最新版本的PHP56并启用了http选项(根据需要安装/升级/重新安装)
$ brew upgrade php56 --with-httpd
在Apache2配置文件中链接模块 在apache2配置文件/etc/apache2/httpd.conf
中添加以下语句LoadModule php5_module /usr/local/Cellar/php56/5.6.32_8/libexec/apache2/libphp5.so
添加PHP5配置文件
从php7.conf
制作副本$ cd / etc / apache2 / other; sudo cp php7.conf php5.conf
将php7_module替换为php5_module
重启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已经过时了,新系统将推出最新版本!