I'm trying to track down a php issue with a tool that I'm trying to install, and have tracked it down, I believe, to a permissions issue with the filesystem, I believe...

I now have the following simple .php file:

<?php
system("/bin/ls");
?>

When I run this, I see the following error in /var/log/httpd/error_log:

sh: /bin/ls: Permission denied

If I change the php to run:

<?php
system("/bin/env");
?>

Then I see the output that I was expecting.

So it's not the execution that doesn't have permissions, it's what the executable is trying to read that is having problems.

(The tool I am trying to get working here is phplicensewatcher - a tool for keeping an eye on what is going on with various license management daemons)

Thanks

link|improve this question

75% accept rate
feedback

1 Answer

up vote 1 down vote accepted

The first two thing I would check:

  • What user is PHP running under? If it's spawned by Apache, it is likely running as "nobody", "www" or "apache" depending on the version and configuration.

  • What directory are you trying to list? Check the permissions on that directory. Does the user PHP is running as have permission to access that directory?

link|improve this answer
I checked which user it was running as by calling 'sleep 30' through php and checking the process list. It's running as 'apache'. I successfully ran "sudo -u apache /bin/ls /". And I'm just trying to list any directory. I've been trying it with / – Hugh Dec 19 '10 at 1:57
Do you have SELinux enabled? It will block things like this as security measures. Run the getenforce command to check. – John T Dec 19 '10 at 2:12
Aha! That was it! It works if I disable SELinux. Many thanks – Hugh Dec 19 '10 at 11:48
feedback

Your Answer

 
or
required, but never shown

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