IIS relies on libraries that contains functions to host ASP.NET, PHP or other types of web applications. If a library is missing or corrupt in the server, your application may not function properly and throw an error such as “The program can’t start because MSVCR71.dll is missing“.
The error messages browsers display to the user aren’t always helpful. This is because either the application uses custom error pages or IIS and the application is not aware of the underlying error.
In this post, I will list the error messages first. These messages led us to the solution. Please jump to “Solution” section to pass the error details.
The Issue with PHP File Upload
In my case, users were trying to upload files to the application but they were failing. There were no visible error message on the application. However, F12 Developer Tools showed “500 – Internal Server Error“. We also saw the message below in Event Viewer:
Faulting application name: php-cgi.exe, version 5.2.11.11
Faulting module name: php-cgi.exe, version 5.2.11.11
Exception code: 0xc0000005
Faulting offset: 0x0000191a
Faulting process id: 0x1280
Faulting application path: C\php\php-cgi.exe
PHPINFO Error (The FastCGI process exited unexpectedly)
If you come across an issue with php-cgi.exe
in IIS, I would recommend checking if PHP is functional first. You can do this by deploying a simple PHP file in the application root folder. Here is a sample code for your PHP file:
<?php
phpinfo();
?>
phpinfo()
class displays information about the current status of PHP. More information is on the official PHP site.
In the server I troubleshot, the PHP page failed with the error below.
HTTP Error 500.0 – Internal Server Error
c:\php\php-cgi.exe – The FastCGI process exited unexpectedly
If the issue in your environment is about the PHP application itself rather than the IIS configuration, check this post out: How to debug PHP projects?
Final error: The program can’t start because MSVCR71.dll is missing
In order to narrow down the issue, I tried to run php-cgi.exe
file located under C:\php
folder. Here is the error message I got:
The program can’t start because MSVCR71.dll is missing from your computer. Try reinstalling the program to fix this problem.
Root Cause
In my scenario, this issue (missing MSVCR72.dll) occurred because -probably- the latest Windows security patches somehow deleted this file in the attempt to place a new version but the newer version wasn’t copied.
We saw that security patches and a new version of Visual C++ Redistributable installed in the server at the same time the issue (file upload failure) started occurring.
Solution
Search for the missing file (MSVCR72.dll) in other servers and even client machines. If you find it, copy it to C:\Windows\SysWOW64
folder. This solved the issue in my case.
Alternatively, you can uninstall the latest security patches and Visual C++ Redistributable that likely to caused the issue. However, It’s unlikely to solve the missing DLL issue (I tried). I have also tried sfc
and dism
tools. They didn’t solve the issue neither.
If you can’t find the missing DLL in other machines, check out DLL Installer. It has the different versions of MSVCR71.DLL available.
You may also try installing (or reinstalling) the correct version of Visual C++ Redistributable.
Here are related Stackoverlow and IIS Forum posts.
During the troubleshooting process, you may need to determine processor architecture for certain DLL files. Here is an easy way to find out this information: How to find out processor architecture (x86, x64) of dll and exe files?