Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm having some difficulty installing Apache 2.4.7 with PHP 5.5.7 on Windows Vista Service Pack 2.

When trying to start Apache, I'm getting the error:

Syntax error on line 176 of C:/Program Files/Apache/conf/httpd.conf: Cannot load C:/Program Files/PHP/php5apache2_4.dll into server: Access is denied.

I've looked at related topics, both on here and other sites, but the only issues I can find are where the error is "The specified procedure could not be found" or "The specified module could not be found", neither of which are relevant to my problem.

As you can see by the download links, I'm using Win32 versions of both Apache and PHP and the thread safe version of PHP. I've made sure that the C:/Program Files/PHP/php5apache2_4.dll file exists and reinstalled the Visual C++ Redistributable (http://www.microsoft.com/en-gb/download/details.aspx?id=30679; VSU_4\vcredist_x86.exe). I've also tried moving both the Apache and the PHP folders outside of the Program Files but this didn't resolve the issue.

As the error I'm getting is "Access is denied", I assume the issue is one of file permissions, but I'm not sure what permissions to change and what to change them to. So any assistance I can get will be much appreciated.

Edit

After some testing it seems that this problem only arises from PHP 5.5.4 onwards. Rolling back to 5.5.3 resolves the issue.

Edit 2

The issue seems to be that php5ts.dll cannot be read despite showing readable permissions. Even when programs are "run as administrator", the file cannot be opened (but can be deleted and renamed). The file can be opened if the extension is changed to something other than dll or exe, and other files in the same folder can be opened even if renamed to php5ts.dll (replacing the original).

share|improve this question
    
Do you have UAC turned on ? Tried turning it off ? –  Lawrence Dec 17 '13 at 12:51
    
Yes. Access is still denied. Also, if it's relevant, Apache is being run as a service. –  MichaelRushton Dec 17 '13 at 13:36
    
I just downloaded and installed those two files and after downloading a copy of msvcr110.dll and compensating for 2.4’s new permissions change, I was able to load a test PHP script without issue. The problem is likely in your configuration files (most likely your Apache httpd.conf file). Back when I was trying to “portablize” a my own WAMP stack, I fixed the problems by using Process Monitor to see what files and paths were being accessed during Apache’s startup to check for errors. –  Synetech Dec 18 '13 at 19:46
    
After following some suggestions by harrymc (comments in the answer below) the problem seems to be with the php5ts.dll file which my system doesn't seem able to access by any means. I just download the zip from the link in my question to my Downloads folder, extract the files, and find that php5ts.dll is unreadable despite being shown to have the right permissions to be read. –  MichaelRushton Dec 18 '13 at 19:58
    
I would say that it is some anti-virus program or something that is locking the file, but I really don’t see why it would be locking that one, specific file. Just forget your current installation for a moment and extract the files from the archives to another location altogether (e.g., the desktop). Can you access php5ts.dll there? Shut Apache down and see if you can get it to work as a daemon instead of a service: i.e., httpd.exe directly. )You’ll have to make three or four modifications to the default httpd.conf file; I can specify which if needed.) –  Synetech Dec 18 '13 at 20:09

2 Answers 2

up vote 1 down vote accepted
+100

Facts and Observations

Let’s analyse the facts:

  1. It works with an extension other than typical executable/code extensions like .dll, .exe, etc.
  2. It does not work with a different filename
  3. It worked just fine with a previous version; only the latest version is having trouble
  4. It works just fine in safe-mode
  5. Safe-mode disables all non-essential drivers and service
  6. It shows no locks or open-handles
  7. It says access denied
  8. It cannot be moved, opened, copied, etc.

Analysis

Points 1-3 indicates that something about the contents of the file are triggering the problem. This sounds a lot like some sort of anti-virus program throwing a false-positive.

Points 4-6 point to some sort of service or driver that is causing the problem.

Technical

Security software, like anti-virus programs usually have to run at a low-level to avoid letting malware sneak in, so they use drivers and run under the System process. This prevents most programs from being able to detect that a file is locked by the security program (which is why Unlocker could not find any open handles), and even if they can, they only show that System has it open which isn’t very helpful.

Application and Explanation

You said that you had AVG installed at one point, but uninstalled it. Apparently AVG did not uninstall completely (missed a reboot?) and so its drivers was left behind.

So now, whenever you access a file, the driver locks it to scan, but because the rest of the program is gone, there is no way for it prompt you if it thinks the file is suspicious. If the program were still installed, it would show a prompt and ask you want to do (or more likely these days, automatically quarantine/delete the file to “protect” you). Since the program is gone, the driver component sits there waiting, while keeping the file locked.

Since you had uninstalled AVG a while ago, it probably doesn’t have the latest definitions (if any?), so it would not be able to leave the latest version of php5ts.dll alone, and threw a false-positive, thus locking the file with no way of telling it knock it off.

AVG

I don’t know if AVG ever complained about this specific version of php5ts.dll when it first came out, but it doesn’t now.

Also, I don’t know if AVG is known for having a lot of false-positives, though I’m sure I’ve read that about some AV vender; but a cursory check seems to indicate that searching for false positive has at least 33% more hits for AVG than other AV vendors.

Advice for the Future

This problem occurred because AVG did not uninstall completely and left remnants behind. Unfortunately this is an all–too-common problem. In the future, when uninstalling any software be it anti-virus programs, printer drivers/software, etc. always check if the vendor has provided some sort of removal/cleanup tool/utility (try different combinations of words to make sure you find it).

Most security software and printer vendors, as well as some other software firms and hardware manufacturers will have a (usually small) program that you can download and run to wipe out all traces of their software. Unfortunately, this is usually not built into the uninstaller and must be downloaded manually from their site. Sometimes it will be in the normal parts of their site, sometimes it will be buried somewhere in their support forums. (These are usually compiled from bug-reports from people who found left-over files, registry entries, services, etc. that are left behind by the uninstaller, which is why they are separate.)

In your case, you could have (and still should), use the AVG “remover”.

NB: when searching for a cleanup utility for security software, be careful not to mix it up with a virus-removal tool.

share|improve this answer

Normally these kind of errors mean that you are missing a dependency that is used by php5apache2_4.dll, probably introduced in PHP 5.5.4.

To verify which one is missing, use the Dependency Walker, that displays the missing DLLs in red color. Missing DLLs that are marked as "delayed load" are usually not a problem.

Ensure that you do not have a 32-bit/64-bit mismatch. As everything is in C:/Program Files, I suppose that all software is 64-bit. In this case use also the 64-bit version of Dependency Walker.

share|improve this answer
    
It seems like all the comments on my answer have disappeared, but the comments on the post have converged to exactly the same conclusion. My last comment was to verify in Safe mode, since some security program is apparently blocking the access. If unclear which which, one can use Autoruns to turn off all non-Microsoft startups except Apache and reboot, then turn startups back on in bunches and narrow it down. –  harrymc Dec 20 '13 at 6:13
    
After some digging I found an AVGIDSAgent service that was part of an AVG anti-virus program I wasn't aware of. I uninstalled it and now php5ts.dll is readable and PHP 5.5.7 will run. –  MichaelRushton Dec 20 '13 at 11:28
    
Fine, so problem solved. –  harrymc Dec 20 '13 at 12:13

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.