Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

The problem I am struggling for a few hours is: I want to execute a script in background with PHP, so I'm using shell_exec() function, and I can't get it work. But is not a problem related with shell_exec function because I have tested the shell_exec('sleep 5') command and it worked. The command Im trying to execute is:

shell_exec('nohup /kunden/usr/local/bin/php5.4 /kunden/homepages/XX/dXXXXXXXX/htdocs/myproject/background_script.php > /dev/null 2>&1 & echo $!');

The script inserts one row in a MySQL database. I have tested the exact same command inside the quotes via SSH with putty and it worked perfectly, but i can't get it work from the web browser.

I don't think is important, but is a shared server with 1and1.

EDIT: Finally I used the library phpseclib and now I have it working.

    $ssh = new Net_SSH2('myhosting');
    if (!$ssh->login('user', 'pass')) {
        exit('Login Failed');
    }

    $this->pid = $ssh->exec(sprintf(
        '%s > %s 2>&1 & echo $!',
        $this->command,
        $outputFile
    ));
share|improve this question
    
You say "i can't get it work inside my php code". What happens or doesn't happen? Do you get any error messages? Maybe you could remove the redirection in the command, so you're not throwing away any error messages that the program is emitting. –  Kenster Aug 10 '14 at 15:04
    
I know is not working because is not inserting the row in the database. If I do echo shell_exec('...') from the php in the browser returns the pid number. In last execution 13885. Is there something I am missing? –  Jesús Cerezuela Zaplana Aug 10 '14 at 15:21

Your Answer

 
discard

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

Browse other questions tagged or ask your own question.