6

I have a problem in php/linux, described below:

I have to execute a linux command through shell_exec (plesk cli command subscription webspace-off).

The problem is when i do this from php it works, but restarts apache, that resulting in a blank page, while apache restarts.

To get rid of the problem i have to call that shell_exec in background, with a delay (Expected result: the web page loads, and after 4 sec. runs the linux script.)

I have done some tryings like:

shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3  --webspace-off ".$domain_name." &");

but php will wait for response.

Somehow i need to sleep the execution of a linux command , and all this has to run in bg., and dont wait for response.

Thanks

1 Answer 1

10

You should try using exec rather than shell_exec, and redirect all output to /dev/null. Something like:

exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");

(Note the () around the commands: you need to catch the output stream of both sleep and your wrapper.)

Edit: and make real sure that you validate $domain_name. Without validation and with

$domain_name = "; rm -rf ...";

you're in trouble...

Sign up to request clarification or add additional context in comments.

1 Comment

throwing all output to /dev/null saved my night! Thanks!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.