【杂记】关于ThinkPHP V5项目上线的若干反思

localhost环境开发反思

1.TP5完全开发手册是学习TP5框架的最快捷最高效的工具

 

项目上线VPS反思

1、注意根据TP5安装环境要求对VPS上的linux主机进行相应配置。

据完全按开发手册,TP5安装环境要求:

  • PHP >= 5.4.0
  • 开启PDO(用于提升数据库操作安全性)、MBString(用于多字节字符串处理)、CURL拓展

可以通过yum安装php56w包和yum list | grep php56w并安装相应拓展实现需求

关于mysqlnd拓展和mysql拓展:两种拓展均提供php与数据库的交互服务,但是基于不同驱动,同时安装会冲突(请注意),鉴于mysqlnd驱动的一些优点(笔者还未了解),php 5.3以上的版本均以mysqlnd为默认驱动了(但似乎linux上yum安装php56w时不会被检索为依赖拓展,仍需要手动安装)

 

2、注意localhost环境与vps环境的apache配置差异

据完全开发手册,TP5的路由url可以省去index.php的填写是因为apache服务器启用了mod_rewrite.so并在httpd.conf和.htaccess文件中进行了相应的配置。我的localhost是默认的Load了rewrite模块,httpd.conf中网站根目录下的AllowOverride也改为了All,于是TP5中public目录下的.htaccess文件可以生效(该文件定义了省去index.php的重写规则)。于是localhost环境开发比较顺利。

而vps上apache服务器的模块虽然启用了(可到  /etc/httpd/conf/httpd.conf  文件中或  /etc/httpd/conf.d/  目录下相应文件中查看),但网站根目录的AllowOverride None未修改,或修改后未重启服务,均会导致404

 

3、关于open_basedir

据完全开发手册“部署”部分给出的服务器报错解决方案,设置open_basedir可以解决问题。

但我的apache配置文件中似乎看不见它的踪影,这个选项是用来设置外部可访问的服务器主机文件系统范围的,我现在还是不要乱搞比较好。

 

4、关于查看用TP5写成的接口的返回值

不要直接在url中输入接口地址,譬如返回的是json格式数据(事实上,这是TP5的默认数据返回格式),浏览器是无法直接显示json对象的,于是会报错(框架文件Response.php中返回数据格式格式不对)。同时如果直接用url访问post方式访问的接口地址而忘记用PATH_INFO形式带参数,也会导致报错,对我这种小白的debug比较不利。

所以,关于接口返回值,可以通过chrome开发者工具(F12)的Network选项中相应地址的Response栏查看,如果看到了期望的返回值,则证明后端代码没问题(事实上,如果有问题,在postman调试时应该就能发现)

 

5、关于500

对于API模式开发的项目上线,前后端代码都没问题(postman基本测试通过,Response栏有期望数据),却有500报错,最直接的方法应该就是查看apache错误日志了

错误日志在 /var/log/httpd/  目录下,主要在error_log文件中。

我这次的500原因是TP5的runtime文件夹访问权限问题,同时需要注意linux环境下的大小写敏感。

你可能感兴趣的:(Linux)