iis8.5 + php 遇到问题:php
原来硬盘快挂了,换了硬盘,重装系统,重新配置环境,太麻烦了,要是有命令可以一条命令安装所有应用,会省好多事,期待
win-get
早点出来,废话不多说,直接上问题及解决方法:
1. HTTP 错误 500.0 - Internal Server Error
1.1 环境
iis: win10
PHP: 7.2
php 文件内容: <?php echo “php is running.”;
1.2 报错详情:
php-cgi.exe - FastCGI 进程意外退出
模块:FastCgiModule
错误代码:0xc0000022
1.3 解决
1.3.0 基本操作
php cs.php , 无报错
php -v:无报错
1.3.1 安装 vc:问题未解决
vc9 - 2008 :.
vc11 - 2012:
vc14 - 2015:
vc15 - 2017:
win10
自带?还是装nodejs
时就安装了
1.3.2 重新下载 PHP 新版本:未解决
1.3.3 修改程序池:未解决
重新创建程序池:iis-> 应用程序池 -> 添加应用程序池 -> .NET CLR 版本:v4.0 -> 托管管道模式:集成 -> 确定
修改程序池参数:托管模式:经典;.NET CLR 版本:无托管代码;.NET CLR 版本:v2.0, 均无效
1.3.4 求助万能的百度:未解决
大多数是装 vcXX,不行鸭,前面试了
1.3.5 求助 bing(PS: 不用翻墙,就能访问):未解决
我还特意改成了英文版,关键词:
php7 iis FastCGI process exited unexpectedly FastCgiModule
然并卵,多了个修改程序池,离成功就差 1 步
1.3.6 求助 谷歌:解决
修改程序池:程序池 -》 右键 -> 高级设置 -> 进程模型 -> 标识 -> 内置账户 -> LocalSystem -> 确定 (答案如下图)
尝试访问:
curl http://cs.p/cs.php
, 返回:php is running
;OK,成功;直到这里还不能解决问题 ,接着重点来了:
每一个fastfgi 都制定对应的环境变量
问题解决
总结:
iis访问php时会先默认访问系统指定的phpRC 环境变量,获得对应的php配置环境,否则会出错,iis7.5以上的版本可以配置多个php版本,则需要在iis中为每个php版本指定对应的环境变量