当我尝试在 Windows Server 2012 和 IIS 上运行 PHP 文件时,我不断收到 500 错误。我找不到任何详细日志或任何内容。但是,当我转到 IIS 的 PHP 管理器并单击检查配置时,我收到以下错误:
Detailed Error Information:
Module FastCgiModule
Notification ExecuteRequestHandler
Handler PHP55_via_FastCGI
Error Code 0xc0000135
Requested URL http://domain.com:80/brkld3ip.php
Physical Path drive:\sites\domain.com\brkld3ip.php
Logon Method Anonymous
Logon User Anonymous
我在全新安装的 Windows Server 上使用 Microsoft Web Platform Installer 5.0 安装了 PHP。
我是 Linux 的 IIS 新手。所以我对 IIS 的“了解”还不够,不知道发生了什么。我尝试按照几个网站的建议更新 C++ redistributable 2012 update 4。有人有其他想法吗?
编辑:我检查的另一件事是内存限制。一个网站建议我需要提高内存限制。没有变化。
编辑:问题:是否必须重新启动 Windows 才能使 PHP 更改生效?
答案1
您很有可能缺少所运行的 PHP 版本的正确 VC++ 运行时。
如果您正在运行 PHP 5.5.x,则需要确保已安装 VC++11 运行时:
http://www.microsoft.com/en-us/download/details.aspx?id=30679
确保您下载并安装了 x86 版本(vcredist_x86.exe
),Windows 上的 PHP 尚未是 64 位。
如果您正在运行 PHP 5.4.x,那么您需要安装 VC++9 运行时:
http://www.microsoft.com/en-us/download/details.aspx?id=5582
答案2
我被类似的消息困扰了,结果发现我没有安装 CGI 服务器角色(在 IIS -> 应用程序开发下)。
答案3
我在安装了 IIS 8.5 的 2012 R2 服务器上使用 PHP 7.0.3 时遇到了同样的错误。
解决方案是安装:Visual C++ Redistributable for Visual Studio 2015 32bits
安装后一切都正常运行。
答案4
安装 Visual Studio 2015 32 位版的 Visual C++ Redistributable 后仍然出现 500 错误。
从微软 sysinternals 运行 procmon,在请求我的 php 网页时发现
w3wp.exe C:\PHP\php-cgi.exe "ACCESS DENIED"
w3wp.exe 是在 IIS 下运行的应用程序池
授予特定应用程序池用户对 c:\php 的读取/执行权限解决了该问题。