前情提要
最近因為畢設(shè)在搭建接口及數(shù)據(jù)庫環(huán)境,使用Apache+MySQL+PHP在阿里云ECS服務(wù)器中配置,之前在本地配置過并成功實現(xiàn),但是在阿里云中卻頻頻出錯求类,記錄下配置過程中遇到的坑奔垦,方便后來人借鑒參考屹耐!
大坑集錦
# 80端口無法使用
情況描述:80端口作為網(wǎng)站默認(rèn)端口,在當(dāng)前主機(jī)沒有備案的情況下是不能訪問的椿猎。而Apache2的默認(rèn)端口號就是80惶岭,若讀者們想要馬上部署使用接口,可修改Apache2的默認(rèn)端口號犯眠。
問題解決:修改 /etc/apache2/ports.conf 將
NameVirtualHost *:80
Listen 80
中的80改為其他端口號按灶,如改為9000:
NameVirtualHost *:9000
Listen 9000
然后修改/etc/apache2/sites-available/000-default.conf文件,將其第一行的
<VirtualHost *:80>
改為對應(yīng)的端口號筐咧,如9000:
<VirtualHost *:9000>
重啟可完成端口號的修改鸯旁,重啟指令如下:
service apache2 restart
# php無法解析,網(wǎng)頁顯示源代碼
情況描述:筆者先后使用apt install
指令下載了Apache2和PHP7.0量蕊,然后通過scp
指令將本地編寫好的PHP通信接口上傳到阿里云主機(jī)的/var/www/html
目錄下铺罢,通過網(wǎng)址在瀏覽器中查看接口的部署情況,發(fā)現(xiàn)網(wǎng)頁顯示的是PHP源碼残炮。
問題解決:筆者查閱了網(wǎng)上各種解決方法韭赘,比如:
- 在Apache配置文件中添加AddType application/x-httpd-php .php
- 在php.ini配置文件中將short_open_tag的屬性值改為true
- 重新安裝
但是發(fā)現(xiàn)這些解決方法然并卵!J凭汀泉瞻!
后來在某乎上找到了一個解決方法成功地解決了筆者的問題:通過apt指令下載apache2-mod-php7.0脉漏。
apt install apache2-mod-php7.0
上述的解決方法是針對ubuntu系統(tǒng),后來筆者在自己的Mac本機(jī)上發(fā)現(xiàn)頁出現(xiàn)了這個問題袖牙,Mac端的解決方法是修改/etc/apache2/httpd.conf
文件侧巨,找到下面這句話:
#LoadModule php5_module libexec/apache2/libphp5.so
將#
去掉,在講5
改為目前PHP的版本鞭达,如筆者的PHP版本是7
刃泡,則將5
改為7
:
LoadModule php7_module libexec/apache2/libphp7.so
# Uncaught Error: Call to undefined function mysql_connect()
情況描述:筆者使用的是PHP7,發(fā)現(xiàn)凡是調(diào)用了mysql_connect()的地方總會報錯:
Uncaught Error: Call to undefined function mysql_connect()
問題解決:報錯出現(xiàn)的原因是PHP7已經(jīng)丟棄了mysql_connect()
方法的使用碉怔,改用mysqli_connect()
即可烘贴,其他方法類推。
# PHP去掉警告
情況描述:筆者在運行php接口腳本的時候發(fā)現(xiàn)頁面上頁面上顯示了PHP的warning撮胧,這些警告對運行沒有影響桨踪,但是顯示在頁面上對移動端的數(shù)據(jù)解析會有影響,所以這個警告需要去除芹啥。
問題解決:找到php.ini文件锻离,在文件中找到:error_reporting = E_ALL
將其改為error_reporting = E_ERROR
,這樣PHP腳本運行的時候墓怀,網(wǎng)頁上只會顯示錯誤提示汽纠。如果讀者們不知道php.ini在哪里,可以在運行的目錄下新建一個info.php文件傀履,在其中輸入:
<?php
echo phpinfo();
?>
然后在瀏覽器的輸入欄中輸入:
localhost/info.php
網(wǎng)頁就會顯示如下圖所示的內(nèi)容:
在其中搜索php.ini
虱朵,便可以找到php.ini
文件的路徑:
# Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'
情況描述:MySQL面板提示:
Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'
問題解決:終端(命令行)運行:
sudo chown -R mysql /usr/local/mysql/data
# PHP獲取數(shù)據(jù)庫中文亂碼
情況描述:后端接口從數(shù)據(jù)庫獲取的中文數(shù)據(jù)全變成問號?
,而數(shù)據(jù)庫本身的中文可以正常顯示钓账。
問題解決:在PHP執(zhí)行mysql_connect()
方法以后添加下面一句:
mysql_query("SET NAMES UTF8");