
我剛從 14.10 升級到 16.04,不確定如何在 apache 中配置 PHP 7。我確實修改了 php7.0.conf 檔案以取消最後幾行的註釋,重新啟動 apache2 並且沒有任何更改。
我需要更改 apache2 設定以允許 php 嗎?
PHP 從命令列運行,所以我確信 php 已正確安裝。
此外,我在 phpadmin 上收到錯誤訊息,指出 mbstring 遺失。
答案1
就像以前一樣,您必須為 Apache 安裝 PHP。
來自伺服器指南:
sudo apt install php libapache2-mod-php
該命令將安裝 PHP 和 Apache 2 PHP 模組。只需像以前一樣配置 Apache(sudo a2enmod php7.0
我認為,將打開該模組)。
您的mbstring
問題類似 - 您需要安裝該擴充功能:
sudo apt install php7.0-mbstring
對於其他缺少的模組,也必須安裝類似的東西。
答案2
要配置 php7 與您的伺服器一起運行,您需要進行一些配置:
1. 確保清除任何痕跡php/php5
打開終端機Ctrl+ Alt+T並:
cd /etc/apache2/mods-enabled
ls -la
輸出應該不是包含任何php5.conf
or php5.load
,但如果包含,請執行以下操作:
# this is the proper way of disabling modules
sudo a2dismod php5
# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf
現在加入php7.0.conf
andphp7.0.load
代替:
# this is the proper way of enabling modules
sudo a2enmod php7.0
# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load
的輸出ls -la php*
應如下所示:
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load
處理完模組後,我們現在進入/etc/apache2/conf-enabled
目錄。這裡也刪除 php/php5 的任何痕跡sudo rm <name>
然後,如果需要的話:
# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm
# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf
的輸出ls -la php*
應如下所示:
lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf
2. 重啟Apache2
在重新啟動 Apache 之前,請確保清理 Apacheerror.log
然後重新啟動:
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
error.log
現在透過發出來檢查cat /var/log/apache2/error.log | less
(透過 less 進行管道傳輸可讓您輕鬆上下滾動,q
退出輸出)。
如果你error.log
包含很多(我的字面意思是堆疊的)一些MIBS not found
執行以下操作:
sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
再次檢查它error.log
現在應該只包含 3 行:
[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'
您的 php7.0 的 Apache 現在應該已正確設定。
答案3
我也遇到這個問題了。
它幫助我刪除所有 PHP 並重新安裝 php7。
所需要的只是:
sudo apt-get purge php*
php7 將會被刪除,然後重新安裝:
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0
答案4
我找到的解決方案是使用預設的 PHP.INI 設定來解決這個問題。預設情況下,此設定為“關閉”。我的 PHP 程式碼開始於
<?
代替
<?php
如果啟用了short_open_tag(透過在我的php.ini中將“Off”更改為“On”)並重置apache伺服器(sudo service apache2 restart
)並且PHP會彈出來。