更新至18.04後開啟PHP網頁顯示原始碼 [論壇 - 伺服器架設]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



更新至18.04後開啟PHP網頁顯示原始碼
會員一級
註冊日期:
2018/11/27 14:15
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 5
MP : 1 / 76
EXP: 21
離線
從16.04更新至18.04後,開啟PHP網頁會顯示原始碼,
上網查詢可能原因為:未安裝PHP,
下指令查詢後得知有安裝PHP且版本為7.2,
請問該怎麼處理這個問題?

附件:



jpg  擷取.JPG (14.56 KB)
53154_5bfce40516c1c.jpg 411X165 px

jpg  擷取-1.JPG (30.72 KB)
53154_5bfce4096fe03.jpg 730X108 px

2018/11/27 14:28
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30253
EXP: 23
離線
假如您已經安裝了「libapache2-mod-php7.2」。

請先檢查「/etc/apache2/mods-enabled/php7.2.load」這個檔案
和「/etc/apache2/mods-enabled/php7.2.conf」這個檔案
是否存在,

舉例,檢查「/etc/apache2/mods-enabled/php7.2.load」這個檔案是否存在


$ ls /etc/apache2/mods-enabled/php7.2.load



若不存在,會顯示如下


ls: cannot access '/etc/apache2/mods-enabled/php7.2.load': No such file or directory



若不存在,請執行下面指令


$ sudo a2enmod php7.2



就會產生「/etc/apache2/mods-enabled/php7.2.load」這個檔案
和產生「/etc/apache2/mods-enabled/php7.2.conf」這個檔案

接著執行下面指令


$ systemctl restart apache2



註:
透過「sudo a2enmod」產生「/etc/apache2/mods-enabled/php7.2.load」,會是一個「symbolic link」,
會「symbolic link」到「/etc/apache2/mods-available/php7.2.load」。

執行


$ file /etc/apache2/mods-enabled/php7.2.load



顯示


/etc/apache2/mods-enabled/php7.2.load: symbolic link to ../mods-available/php7.2.load




============================================================

另外有一種情形,是關於個人家目錄底下的網頁的,請參考「#3 回覆: php網頁打開變原始碼」,
確認看看在您的環境,是否是這個因素導致您提到的狀況?

* /etc/apache2/mods-available/php7.2.conf
* /etc/apache2/mods-enabled/php7.2.conf
* http://php.net/manual/en/apache.configuration.php#ini.engine
* http://php.net/manual/en/configuration.changes.php
* http://php.net/manual/en/apache.configuration.php#ini.engine

以下擷取「/etc/apache2/mods-available/php7.2.conf」最下方一段


# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>




============================================================

也有可能是其他因素導致的,該討論串也有列一些參考連結,您可以先參考看看

* https://help.ubuntu.com/lts/serverguide/web-servers.html
* https://help.ubuntu.com/lts/serverguide/httpd.html
* https://help.ubuntu.com/lts/serverguide/php.html

有其他線索,可以再提出來討論

============================================================


$ dpkg -l libapache2-mod-php



顯示


Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============================-====================-====================-=====
ii libapache2-mod-php 1:7.2+60ubuntu1 all server-side, HTML-embedded scripting language (Apache 2 module)



執行


$ dpkg -l libapache2-mod-php7.2



顯示


Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============================-====================-====================-=======
ii libapache2-mod-php7.2 7.2.10-0ubuntu0.18.0 amd64 server-side, HTML-embedded scripting language (Apache 2 module)



執行


$ dpkg -L libapache2-mod-php7.2



顯示


/.
/etc
/etc/apache2
/etc/apache2/mods-available
/etc/apache2/mods-available/php7.2.conf
/etc/apache2/mods-available/php7.2.load
/etc/php
/etc/php/7.2
/etc/php/7.2/apache2
/etc/php/7.2/apache2/conf.d
/usr
/usr/lib
/usr/lib/apache2
/usr/lib/apache2/modules
/usr/lib/apache2/modules/libphp7.2.so
/usr/lib/php
/usr/lib/php/7.2
/usr/lib/php/7.2/sapi
/usr/lib/php/7.2/sapi/apache2
/usr/share
/usr/share/bug
/usr/share/bug/libapache2-mod-php7.2
/usr/share/bug/libapache2-mod-php7.2/control
/usr/share/bug/libapache2-mod-php7.2/script
/usr/share/doc
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libapache2-mod-php7.2
/usr/share/doc/libapache2-mod-php7.2



以上提供探索的起點

以前有紀錄一些討論案例在「[索引] Apache操作實務」,也可以參考。

以下是一些相關指令範例,提供參考


# 啟用「apache模組php7.2」
$ sudo a2dismod php7.2

# 停用「apache模組php7.2」
$ sudo a2enmod php7.2

# 重新啟動「系統服務apache2」
$ sudo systemctl restart apache2

# 重新啟動「系統服務apache2」
$ sudo /etc/init.d/apache2 restart

# 重新啟動「系統服務apache2」
$ sudo service apache2 restart




2018/11/27 14:41
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員一級
註冊日期:
2018/11/27 14:15
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 5
MP : 1 / 76
EXP: 21
離線
感謝您的回覆,
* /etc/apache2/mods-available/php7.2.conf
* /etc/apache2/mods-enabled/php7.2.conf
php_admin_flag engine Off
將其修改為php_admin_flag engine On
依序輸入您提供的指令,
並使用您提供的指令範例重啟
$ sudo a2dismod php7.2

$ sudo a2enmod php7.2

$ sudo systemctl restart apache2

$ sudo /etc/init.d/apache2 restart

$ sudo service apache2 restart

仍無法解決此問題。

附件:



jpg  1.JPG (74.19 KB)
53154_5bfcf253e84d2.jpg 736X456 px

jpg  2.JPG (39.08 KB)
53154_5bfcf25a6834a.jpg 715X131 px

jpg  3.JPG (41.07 KB)
53154_5bfcf28d69748.jpg 716X131 px

jpg  4.JPG (68.41 KB)
53154_5bfcf2b9ed567.jpg 730X548 px

2018/11/27 15:36
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30253
EXP: 23
離線
我上面「#2」有重新編輯了一下,您再參考看看,
抱歉,我一開始想到啥,就直接寫了,可能誤導您了。

關於指令範例只是給您參考,您需要了解每個指令在做什麼,
否則有可能我會誤導您執行到錯誤的步驟 Orz...

執行下面指令,了解「a2enmod」的用法


$ man a2enmod



執行下面指令,了解「a2dismod」的用法


$ man a2dismod




其他相關的


$ man a2enconf

$ man a2disconf

$ man a2ensite

$ man a2dissite



============================================================

執行


$ file /usr/sbin/a2enmod



顯示


/usr/sbin/a2enmod: Perl script text executable



關於「a2enmod」是「Perl script」,

所以也可以直接觀看「/usr/sbin/a2enmod」,來了解它裡面執行那些動作


$ view /usr/sbin/a2enmod


2018/11/27 15:44
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員一級
註冊日期:
2018/11/27 14:15
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 5
MP : 1 / 76
EXP: 21
離線
謝謝您的回覆,
#2根據您新增的部分,
「/etc/apache2/mods-enabled/php7.2.load」
「/etc/apache2/mods-enabled/php7.2.conf」
檢查後發現有這兩個檔案
並確認
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
改為
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine On
</Directory>
</IfModule>
並重啟apache2,

另外,想詢問你
<Directory /home/*/public_html>
該行路徑需要改設為網站資料夾的路徑嗎?

2018/11/27 16:28
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30253
EXP: 23
離線
TETETETETE 寫到:
謝謝您的回覆,
#2根據您新增的部分,
「/etc/apache2/mods-enabled/php7.2.load」
「/etc/apache2/mods-enabled/php7.2.conf」
檢查後發現有這兩個檔案
並確認
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
改為
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine On
</Directory>
</IfModule>
並重啟apache2,

另外,想詢問你
<Directory /home/*/public_html>
該行路徑需要改設為網站資料夾的路徑嗎?


這裡應該是不需要去修改它的路徑,

這是另一個議題,應該是跟原本您提到的無關,

它是有關每個使用者家目錄裡面的網頁設定

舉例:

使用者「cooker」,
就會是跟「/home/cooker/public_html」這個資料夾有關。

假設有一個檔案「/home/cooker/public_html/test.php」。
對應的連結就是「http://localhost/~cooker/test.php」。

假設有一個檔案「/home/cooker/public_html/demo.html」。
對應的連結就是「http://localhost/~cooker/demo.html」。

另外也要開啟「userdir」這個模組,也就是執行「$ sudo a2enmod userdir」。

也就是會產生下面兩個檔案

* /etc/apache2/mods-enabled/userdir.load
* /etc/apache2/mods-enabled/userdir.conf

您可以觀看「/etc/apache2/mods-enabled/userdir.conf」裡面的設定,


<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                Require method GET POST OPTIONS
        </Directory>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet



============================================================

另外請注意下面綠色字的註解說明

以下擷取「/etc/apache2/mods-available/php7.2.conf」最下方一段


# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>




============================================================

而您在「#1」提供的「」,
關於「http://127.0.0.1/info.php」這個連結。
應該是「/var/www/html/info.php」。

關於「/var/www/html/」相關的設定在

* /etc/apache2/sites-available/000-default.conf
* /etc/apache2/sites-enabled/000-default.conf

而「apache」最主要設定則在「/etc/apache2/apache2.conf」。

============================================================

可能您要再研究看看,會是什麼因素,導致在您的環境,發生「#1」這樣的情形

目前我還聯想不到其他的因素 Orz...

2018/11/27 16:55
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員一級
註冊日期:
2018/11/27 14:15
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 5
MP : 1 / 76
EXP: 21
離線
感謝您的回覆,
好像找出問題原因了,
根據您的回覆執行「$ sudo a2enmod userdir」
開啟userdir後就可以正常顯示網頁了,
謝謝大大的幫助!!

2018/11/27 17:16
應用擴展 工具箱
回覆: 更新至18.04後開啟PHP網頁顯示原始碼
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30253
EXP: 23
離線
TETETETETE 寫到:
感謝您的回覆,
好像找出問題原因了,
根據您的回覆執行「$ sudo a2enmod userdir」
開啟userdir後就可以正常顯示網頁了,
謝謝大大的幫助!!


在我的環境「Ubuntu 18.04」,

並不需要開啟「userdir」這個模組,
也不需要修改「/etc/apache2/mods-available/php7.2.conf」這個檔案,
只需要開啟「php7.2」這個模組,重啟「apache」。

就能正常讓php執行,
也就是您原本提到的「http://127.0.0.1/info.php」這個連結,
顯示的是php執行後的結果,而非顯示php的原始碼(「/var/www/html/info.php」這個檔案的原始內容)。

所以我也不確定,在您的環境,會是什麼環節,導致您提到的狀況,

以上再次釐清。

不過既然在您的環境,目前可以正常運作,那就先這樣吧,
若您有興趣去找出真正的原因,有空時,您再花時間去研究其中真正的原因吧,
可以參考我上面回覆提到的相關資訊,再去探索研究。

報告完畢!


2018/11/27 17:55
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.