1. 程式人生 > >Apache 和 PHP 結合

Apache 和 PHP 結合

Apache 和 PHP 結合 Apache PHP

技術分享圖片

先輸入命令 vim /usr/local/apache2.4/conf/httpd.conf,回車查看,見下圖,
技術分享圖片
e2.4/conf/httpd.conf /usr/local/apache2.4/conf/httpd.conf /usr/loc
解析php,這邊需要修改以下4個地方:
1、ServerName
2、Require all denied
3、AddType application/x-httpd-php .php
4、DirectoryIndex index.html index.php

1、ServerName

比如之前命令 /usr/local/apache2.4/bin/apachectl restart,回車,見下圖,

技術分享圖片
這段提示看似報錯,其實是正常的提示。如果我們不想看到這段話,就可以在文件 /usr/local/apache2.4/conf/httpd.conf 裏面更改。重新使用 vim 進入文件,搜索 /ServerName,具體更改見下圖,
技術分享圖片
將上圖紅色框框內的#去掉,保存並退出。重新輸入剛才的命令,見下圖,
技術分享圖片
這邊出現錯誤提示,顯示79行有問題,使用 vim 命令再次進入查看,見下圖,
技術分享圖片
找到79行,在行首用#註釋掉內容,保存並退出,接著restart,見下圖,
技術分享圖片
錯誤還是存在,停掉後重新打開還是這樣。這時候就該想到應該是打開了兩個php的結果。使用 !vim 命令,進入,把79行的#去掉,恢復原來的狀態,將php7用#註釋掉,見下圖,
技術分享圖片
保存並退出,再嘗試重啟,見下圖,
技術分享圖片
這時候就沒有提示了。很明顯,php5和php7是有沖突的。接著看一下進程,輸入命令 ps aux |grep httpd,回車,見下圖,
技術分享圖片

2、Require all denied

這邊需要增加一行配置,現在先查看一下 IP,輸入命令 ifconfig,回車,見下圖,
技術分享圖片
IP 就是上圖紅色框框顯示的 192.168.218.128 。然後在瀏覽器上的地址欄裏面輸入 IP 地址,回車,見下圖,
技術分享圖片
一會之後,可以看到 IP 是無法訪問的,藍色的字體提示“檢查代理服務器和防火墻”。那麽,遇到這種問題,要怎麽排查呢?先在Windows上 cmd 裏面 ping 一下 IP,見下圖,

技術分享圖片
可以看到 IP 是可以通的,接著再判斷它的 80 端口。上圖顯示沒有 telnet 這個命令,是因為我們沒有打開 telnet 客戶端,現在將這個客戶端的程序打開,具體操作見下圖,
技術分享圖片
先打開“控制面板”,點擊“程序”,進入下圖,
技術分享圖片
點擊“啟用或關閉Windows功能”,進入下圖,
技術分享圖片
選中“Telnet客戶端”,再點擊“確定”,一會之後,就顯示下圖,
技術分享圖片
點擊關閉即可,返回Windows的cmd,重新輸入命令 telnet 192.168.128.218 80,回車,見下圖,
技術分享圖片
顯示 80 端口連接失敗。因為 Linux 虛擬機上並沒有打開 80 端口,可以在 putty 上使用命令 iptables -nvL 來查看,見下圖,
技術分享圖片
技術分享圖片
技術分享圖片
可以看到沒有 80 端口,要想讓 Windows 訪問 80 端口,可以使用命令 iptables -I INPUT -p tcp --dport 80 -j ACCEPT ,臨時加上 80 端口,見下圖,
技術分享圖片
執行完上述命令,回到 Windows 的 cmd 上,重新輸入剛才的命令 telnet 192.168.218.128 80,回車,見下圖,
技術分享圖片
進入這樣子的界面,就表示 80 端口通了。按住 ctrl+】,就可以退出上圖界面,再輸入命令 quit,可以返回到原來的界面。見下圖,
技術分享圖片
再回到瀏覽器上刷新剛才的IP地址,見下圖,
技術分享圖片
可以看到幾個大字“It works!”,這樣子就表示可以訪問了。
回到 putty 上,輸入命令 vim /usr/local/apache2.4/conf/httpd.conf,回車,搜索 /Require,回車,見下圖,
技術分享圖片
這邊需要把上圖兩個紅色框框裏的內容做個更改,見下圖,
技術分享圖片
保存並退出。改完配置後,使用命令 /usr/local/apache2.4/bin/apachectl -t ,來檢查配置文件的語法是否正確。見下圖,
技術分享圖片
可以看到結果是 OK,說明配置文件的語法沒有問題。可以故意在配置文件裏面加一些任意內容,見下圖,
技術分享圖片
保存並退出,重新執行命令 /usr/local/apache2.4/bin/apachectl -t,見下圖,
技術分享圖片
就能看到報錯了,所以這是個很有用的命令,可以檢測配置文件的語法。再把配置文件改回去,這邊不顯示過程了。接著重新加載配置文件,使用命令 /usr/local/apache2.4/bin/apachectl graceful,回車,見下圖,
技術分享圖片
然後回到瀏覽器上,刷新剛才的 IP 地址,見下圖,
技術分享圖片
就會看到顯示禁止的頁面,就是不允許訪問的意思。所以,回到配置文件那邊,要把兩邊的內容都改為 granted,保存並退出,見下圖,
技術分享圖片
這樣才可以保證網頁是允許訪問的。

3、AddType application/x-httpd-php .php
4、DirectoryIndex index.html index.php

增加一行與 php 相關的內容,輸入命令 vim /usr/local/apache2.4/conf/httpd.conf,回車,搜索 /AddType,回車,找到下圖內容,
技術分享圖片
增加紅色框框的內容 AddType application/x-httpd-php .php,再次搜索 /Index,回車,找到下圖內容,
技術分享圖片
增加紅色框框的內容 index.php,保存並退出。然後檢查一下配置文件語法,並重新加載配置文件,見下圖,
技術分享圖片
現在來驗證一下,apache 能不能支持解析 php,先來寫一個測試的 php 腳本,輸入命令 vi /usr/local/apache2.4/htdocs/1.php,回車,見下圖,
技術分享圖片
輸入上圖內容,保存並退出。接著回到瀏覽器,訪問地址 192.168.218.128/1.php,
技術分享圖片
可以看到這個很漂亮的頁面,說明php就支持解析成功了。現在來看一下,不支持解析的話,會出現什麽頁面?到 putty 上更改配置文件,輸入命令 vim /usr/local/apache2.4/conf/httpd.conf,回車,見下圖,
技術分享圖片
將上圖紅色框框的這一行,用#號註釋掉,保存並退出。接著檢查和加載配置文件,見下圖,
技術分享圖片
然後回到瀏覽器,刷新頁面,見下圖,
技術分享圖片
出現的就是源代碼,這就是php不能解析的情況。所以,以後碰到php不能解析的情況,就要檢查一下apache文件,首先要檢查php有沒有加載,使用命令 /usr/local/apache2.4/bin/apachectl -M,回車,見下圖,
技術分享圖片
可以看到最後一項有php5。如果沒有加載的話,要看一下有沒有這個模塊文件,輸入命令 ls /usr/local/apache2.4/modules/libphp5.so,回車,見下圖,
技術分享圖片
沒有這個文件的話,就無法加載php。如果有文件,而加載項裏面沒有顯示php的話,就要檢查配置文件了,輸入命令 vim /usr/local/apache2.4/conf/httpd.conf,回車,搜索 /libphp5.so,見下圖,
技術分享圖片
查看有沒有上圖紅色框框這一行,沒有的話,肯定就不能解析了。接下來繼續檢查,搜索 /AddType,回車,見下圖,
技術分享圖片
查看有沒有紅色框框這一行,然後仔細認真查看,紅色框框的內容格式是否正確,這邊可以使用命令 /usr/local/apache2.4/bin/apachectl -t 來檢查。接著搜索 /index.php,回車,見下圖,
技術分享圖片
註意上圖紅色框框的內容是否有添加上去。這個是索引的作用,使用命令 ls /usr/local/apache2.4/htdocs/,回車,見下圖,
技術分享圖片
裏面有個 index.html 文件,這就是之前在上上圖定義了 index.php,這邊就可以直接跳轉訪問 index.html 這個文件,所以在瀏覽器上訪問 192.168.218.128 時,會出現 It works!,這幾個字。

因php5和php7不能共存,現在來試試php7。進入配置文件,搜索 /libphp,回車,見下圖,
技術分享圖片
更改上圖紅色框框的內容,見下圖,
技術分享圖片
保存並退出,接著檢查和加載配置文件,見下圖,
技術分享圖片
回到 瀏覽器,刷新頁面,見下圖,
技術分享圖片
也是可以看到這個漂亮的頁面,這邊註意版本號,和前面的php5是不一樣的。說明php7也生效了,可以解析的。在putty上輸入命令 /usr/local/php7/bin/php -i |less,回車,見下圖,
技術分享圖片
可以看到,網頁上顯示的內容和這邊的內容,基本上是一致的。按字母 q 可以退出上圖界面。

Apache 和 PHP 結合