背景:
当时开发环境在win10,生产环境是在server2008版本上的,项目都已经成功运行。
由于sever2008服务器是与其他系统共用的。
领导要求安装在新的服务器上。
因此在申请下来资源后,进行系统移植。
使用的是2012标准版
首先,安装完后测试php,正常完美~
于是满心欢喜地下载了最新版的php
但是居然报500错误!
看到这个页面直接哭了。
这是要折腾死我的节奏啊。
此问题研究了3天,查阅无数资料,甚至安装了iis。都无济于事。
为此,我直接重装了phpstudy,使用了apache,进行最简单的测试,结果仍旧报错。
这小p真的我行我素啊~
刚刚下载的php7.4.4
接下来是排错过程,伸手党请直接移步文章最后!
首先,排除nginx错误,因为apache也报。【后来才知道的】
nginx的cofig文件各种改,但是没用。
vhosts也改了,也没用。除了改出一堆bug外啥都没给我留下。
首先看,nginx日志:(我给断行了)
*1 connect() failed (10061: No connection could be made because the target machine actively refused it)
while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream:
"http://192.168.0.100:9004/stream", host: "localhost:8080"
这种报错
所有解说都指向php-fpm没有连接。
但是php-fpm是啥啊?为啥我搜都搜不到?听都没听说过啊~、
结果发现fpm是linux的。。。。哈哈哈。。。。
https://wenda.so.com/q/1536260358218493
想要寻找php的日志文件,结果发现php根本没有生成日志。
那是不是nginx的请求根本没有传递到php当中呢?
经过查资料整理,nginx是将请求代理给php的fast-cgi进行运行的,apache是有php内核支持的,所以决定用apache试试。
结果apache也报500
这下好了,不是nginx的锅了。
咋办?
先看看原版php
这两个文件夹一看,差好多啊?(左边是我复制过得)
看到二者的差别在哪里了么?
对的,新版的php没有扩展!!!
将所有dll扩展全部复制到7.4.4里面,走起!
当然,实际过程比这个艰难的多,但是我没有想到,phpstudy在升级时候没有复制扩展会连phpinfo();都跑不起来。
说实话,挺惊讶的。为啥我2008生产环境能够跑起来呢?
这个是不是涉及到环境变量的问题?【由于phpstudy的开机自启机制】。
这个以后慢慢研究吧。
对了,解压新的php版本时候,它里面的php.ini是用develop(开发环境用)和production(生活环境用)作后缀的,记得挑一个改过来就行。
说实话,写了这么多有点文不对题的感觉,实际上就是php没装扩展的事,但是不知道为啥在2008和win10下不用这么复制也能够跑起来。初步怀疑环境变量。等以后查到了我再回来编辑这个文章吧!
20200406
参考资料:
linux下php和win下php的配置区别和方法。
https://blog.csdn.net/moshowgame/article/details/84135977
这个也是linux下的:
https://blog.csdn.net/helloworld_dream/article/details/81219552
lnmp的
https://blog.csdn.net/VegetandBird_s/article/details/102734071
写在后面的话:
后来查询到论坛上说phpstudy8.1.0对7.4.4的支持还不太好,所以导致这样的错误,建议将7.4.4文件夹覆盖到7.3.4当中(php.ini原来没有的,覆盖过去就用7.3的),程序不是很稳定,所以覆盖之后不建议频繁重启。