Question

I have written PHP code to execute shell command

<?php exec("phing"); ?>

This is not working at all from browser.

But what I analysed is, it running same command requires "sudo" permission. I am not sure how could I allow my PHP file to execute this commnand as sudo?

Please guide

Was it helpful?

Solution

When executing php, you might not (probably won't be) in any particular directory. Try specifying the absolute path <?php exec("/usr/bin/phing"); ?> Also, did you mean ping instead of phing?

If the webserver has sudo access (a REALLY BAD IDEA) without a password (a REALLY BAD IDEA!!!) to run this command, then you need to change your code to <?php exec("/usr/bin/sudo phing"); ?>

To be able to run sudo, you will need help from the administrator of your computer. I doubt your administrator will allow this, because it's risky to give the webserver sudo access - a lot of work goes into making sure the web server does NOT have any sort of administrator privileges.

OTHER TIPS

First question is what kind of a server are you trying to run this on? Is it your own machine? shared hosting?

It's probably not that it requires sudo, but that it requires some permission that your PHP script doesn't have, and sudo is one way to fix it.

A better way to fix this is to figure out what user your script is running as (possibly nobody?) and ensure the files that phing needs to access are owned by the same user. This may be as simple as changing the file ownership through your FTP program.

Also, don't forget to double-check that you actually are in the directory you think you're in.


To get some of this information, try running the following PHP file:

<pre>
<?php
passthru('id -a');    // figure out what user we're executing as
passthru('pwd');      // figure out what directory we're in
passthru('ls -l .');  // look at the permissions set on the current directory
?>
</pre>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top