解決服務器上部署PHP程序異常


今天記錄一下,在部署PHP程序的時候遇到的一個小問題。

服務器環境

  • 操作系統: 阿里雲學生機 Ubuntu14.04

  • 服務器: Apache2

  • PHP版本: php5

  • 數據庫: MySQL5.2.3

部署遇到的問題

在本地調試完成之后,大致的測試了一下。發現沒什么問題。但是上傳到服務器上就會出錯。

錯誤碼: 500

服務器內部錯誤,最后debug后發現是php鏈接mysql的時候出的錯。

解決方案

MySQL拓展?

一開始還覺得是php中未開啟相關於MySQL的拓展。
查看是否開啟拓展的方法也很簡單,一般可采用如下兩種方式。

  • 到安裝了php5的目錄下查看php.ini文件。找到mysql模塊的位置,看看前面的;是否去掉。

  • 在Apache的運行目錄(默認的話是/var/www/html/)下新建一個php文件。里面寫上<?php echo phpinfo(); ?> 。再就是通過瀏覽器來訪問這個文件。然后就可以查看mysql拓展是否安裝了。

代碼?

經歷了上面的階段,如果沒出錯,那就得懷疑一下自己的代碼了。

畢竟很有可能在傳輸過程中出錯嘛,那么怎么查看文件是否有缺損呢?一般來說還是有兩種比較常用的方法。

  • 死磕: 也就是對照本地文件,一字不差的檢查服務器上的文件是否出錯。但是這個方法只適用於小文件,不然效率不高,還會很累。

  • 第二個方法就是查看MD5和的方法,在Linux上很容易實現,如果您的電腦是windows,也可以自己着手寫一個腳本(這對於咱們程序員來說,應該是小菜一碟的啦)。在Ubuntu上我就直接調用一下命令算了:

    md5sum filename

然而,不管我怎么看,服務器上的代碼都是沒有錯,那為什么會鏈接數據庫失敗呢。這個時候感覺可能是權限的問題了,但是最后也否定了這個思路。

“缺膠水”?

最后,還是在阿里的雲棲社區找到了答案。

在Windows上配置時,要在PHP里面加載 MySQL的dll。那在Linux系統中也需要的吧!

這句話瞬間點醒了我。雖然我對於Windows下是否添加了dll支持也不得而知,因為當時只記得安裝完就可以訪問,所以也沒多想。

看來有些時候這看似正常,其實不正常;看似不正常,反而正常。這句話還是很有道理的。

然后估計就是缺少了這個”膠水“才導致的代碼出錯吧。然后就裝一下吧。


安裝認證及依賴庫

sudo apt-get install libapache2-mod-auth-mysql

安裝php-mysql ”膠水“

sudo apt-get install php5-mysql

重啟apache服務器,讓”膠水“生效

sudo /etc/init.d/apache2 restart

最后,沒想到真的成功了。
體重走勢圖

總結

平時總會遇到一些奇奇怪怪的問題,林林總總。適時的收集起來,整理分類。寫好解決方案,對自己以后的發展必然會有莫大的幫助。

這次的”部署難題“着實給我上了一課。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com