簡體   English   中英

MacOS更新到High Sierra后PHP無法正常工作

[英]PHP not working after MacOS update to High Sierra

我將Mac更新為最新版本的OS。 當我嘗試運行PHP項目時,瀏覽器將顯示php代碼,而不是對其進行解釋。 我注意到在新的操作系統中php是7.1版。 我使用自制軟件安裝了5.6(這對我來說是必需的),並將httpd.conf中的模塊更改為:

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

這是apache錯誤日志:

[2017年9月26日星期二23:59:38.600410] [mpm_prefork:notice] [pid 980] AH00169:捕獲了SIGTERM,關閉了[2017年9月26日23:59:38.622998周二] [core:notice] [pid 980] AH00060:seg父進程AH00557中檢測到錯誤或類似的討厭錯誤:httpd:apr_sockaddr_info_get()對於MacBook Pro-Kamil.local失敗AH00558:httpd:無法使用127.0.0.1可靠地確定服務器的標准域名。 全局設置'ServerName'指令以禁止顯示此消息[2017年9月26日星期二23:59:48.838005] [mpm_prefork:notice] [pid 991] AH00163:配置了Apache / 2.4.27(Unix)PHP / 5.6.31-恢復正常操作[2017年9月26日星期二23:59:48.838097] [core:notice] [pid 991] AH00094:命令行:'/ usr / sbin / httpd -D FOREGROUND'

將以下行添加到我的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,它仍然無法正常工作-必須重新啟動才能使所有內容生效。

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

將PHP5.6與HighSierra結合使用

  1. 啟用構建共享Apache Handler模​​塊的功能確保已安裝最新版本的PHP56和HTTP選項(根據需要安裝/升級/重新安裝)

    $ brew升級php56 --with-httpd

  2. 在Apache2 Config文件中鏈接模塊在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; 須藤cp php7.conf php5.conf

    用php5_module替換php7_module

  4. 重新啟動Apache服務器

    $ sudo / usr / sbin / apachectl重新啟動

看來您的問題不是PHP引起的,而是機器的域名。 請注意消息“ 無法使用127.0.0.1可靠地確定服務器的標准域名。全局設置'ServerName'指令以禁止顯示此消息。檢查httpd.conf文件中的域設置。 您還應該檢查/ etc / hosts文件中是否存在任何沖突。

通過Homebrew安裝和使用Apache / MySQL / PHP的指南非常有用。 它適用於macOS Sierra,但也適用於High Sierra。 它還將向您展示如何安裝多個PHP版本以及方便的在它們之間來回切換的方式(如果您對此感興趣的話)(或者只是保持運行一個PHP版本)。

我喜歡走Homebrew路線,而不是Vagrant或MAMP,因為它更接近本機安裝並且使用的資源更少。 希望有幫助!

在這里使用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,並且在第一次嘗試時就起作用了。

添加后

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

我也查看了自制選項,最終我決定使用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 /中添加

192.168.10.10 mysite.app

您可以下載支持PHP 5.6.31的Xampp版本,並使用Xampp運行您的應用程序。

如果您不想這樣做,我認為您需要回到MacOs Sierra,請記住PHP 5.6已經很舊,新系統附帶了最新版本!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM