I have a quite fresh install of the Apache (2.2.3/Centos) + PHP(5.1.6) and following problem: I need to monitor life of one process and in order to do that I run:
$last_line = exec('ps -C snmpd');
and check its output.
Unfortunately I always get nothing. I've checked it with other process names and it seems it can 'see' only Apache's processes.
Any idea how to work this out?
UPDATE:
Execution of the other command system('snmpget -v2c -c public localhost '.$oid, $retval);
works great, there is only problem with the ps
. What is strange (for me), when I log as apache
user and run ps
manually it works correctly (shows everything).
You will only be able to see the processes of the user under which the web server is running, as this is the user exectuing the command.
If you require the ability to run commands as a different user, have a look at suexec. http://httpd.apache.org/docs/2.2/suexec.html
Try running a fuller
ps
call like:You might also use backtick operator to achieve the same thing. I confirm it works while exec doesn't.
Probably selinux. SELinux restricts the domain that httpd runs in so it can only view its own processes.
You can either:-
This should do it:-
Install selinux-policy-devel from yum.
Then run the command "make -f /usr/share/selinux/devel/Makefile load" to insert the new module.
You should see an immediate result.