解决服务器上部署PHP程序异常

时间:2022-06-01 12:53:55

今天记录一下,在部署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

最后,没想到真的成功了。
解决服务器上部署PHP程序异常

总结

平时总会遇到一些奇奇怪怪的问题,林林总总。适时的收集起来,整理分类。写好解决方案,对自己以后的发展必然会有莫大的帮助。

这次的”部署难题“着实给我上了一课。