今天记录一下,在部署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
最后,没想到真的成功了。
总结
平时总会遇到一些奇奇怪怪的问题,林林总总。适时的收集起来,整理分类。写好解决方案,对自己以后的发展必然会有莫大的帮助。
这次的”部署难题“着实给我上了一课。