当前位置: 首页 > news >正文

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

    • 服务器环境
    • 部署遇到的问题
    • 解决方案
      • MySQL拓展
      • 代码
      • 缺胶水
    • 总结

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

最后,没想到真的成功了。
体重走势图

总结

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

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

相关文章:

  • 史上最全的ASP.NET MVC路由配置
  • jemalloc在linux上从安装到使用
  • Android随记
  • java.lang.NoSuchMethodError: javax.ws.rs.core.HttpHeaders.getHeaderString(Ljava/lang/String;)Ljava/l
  • activeMQ使用总结 (spring 配置)
  • 并发 并行 同步 异步 多线程的区别
  • web服务器内置对象,或者说是ServletAPI的实例
  • 2016年NK冬季训练赛 民间题解
  • Tips
  • ratina 视网膜屏幕解决方案大全
  • rtmp拉流测试工具
  • cmd中java -jar *.jar 提示Unable to access jarfile *.jar或Windows不能用鼠标双击运行jar文件怎么办解决方案...
  • gulp同步执行任务
  • HBase内置过滤器的一些总结
  • 【VBA编程】09.使用Excle集合对象
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 345-反转字符串中的元音字母
  • Apache的基本使用
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • canvas 绘制双线技巧
  • css布局,左右固定中间自适应实现
  • gitlab-ci配置详解(一)
  • JavaScript函数式编程(一)
  • JS 面试题总结
  • Meteor的表单提交:Form
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 测试开发系类之接口自动化测试
  • 移动端解决方案学习记录
  • linux 淘宝开源监控工具tsar
  • 说说我为什么看好Spring Cloud Alibaba
  • #WEB前端(HTML属性)
  • #图像处理
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (+4)2.2UML建模图
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)母版页和相对路径
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net 使用ajax控件后如何调用前端脚本
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .net(C#)中String.Format如何使用
  • .NET/C# 使用反射注册事件
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .netcore如何运行环境安装到Linux服务器
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET下ASPX编程的几个小问题