Today I am going to run a php demo under IIS. The website is The configuration under IIS is as follows:
The application pool is in integrated mode .net framework 2.0 (2.0 or 4.0 does not matter, because php runs in fastCGI mode), and the application pool identifier is configured as the built-in IIS NETWORKSERVICE, the authentication method used is anonymous authentication.
When I opened the local website and accessed the php page, a 500 error occurred.
Okay, it’s a permissions issue. The simplest solution is to set the permissions of C:UsersAdministratorPhpstormProjectsphpDemo to Everyone, and allow full control:
Revisited the php page and succeeded:
The above method is simple enough, but it is also too unsafe. It is usually no problem to set up a local demo to do this, but when it is actually online, it will cause problems sooner or later.
So I reset it and gave the read-only permissions in the directory to the NETWRORKSERVICE account and tried again
However, the problem is still not solved. When accessing, a 401 error occurred
The error message includes that the logged-in user is anonymous. Check the authentication under the website (then click Anonymous Authentication->Edit). It turns out that by default, the website uses the default login user when the login method is anonymous. For IUSR (the anonymous login user we see)
Then the solution is:
1. Set IUSR to the read permission of C:UsersAdministratorPhpstormProjectsphpDemo, similar to the previous setting of NETWORKSERVICE.
2. Or choose to use the application pool identity.
After testing, both methods 1 and 2 were successful.
Note: NETWORKSERVICE belongs to the iis_iusers user group in IIS7. The previous settings for NETWORKSERVICE can also be changed to the settings for iis_iusers, which can also solve the problem, but the permissions are further relaxed.