Re: exec() and redirect output of program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/1/07, Brad Fuller <bfuller@xxxxxxxxxxxxxxxx> wrote:
Brad Fuller wrote:
> Daniel Brown wrote:
>>     This way just lets it do it's own thing, with no output, and PHP
>> won't hang.  It'll continue from the CLI after the HTTP session is
>> over.
>>
>> <?
>> exec('php test.php > /dev/null 2>&1 &'); ?>
>>
>>
>> On 5/1/07, Brad Fuller <bfuller@xxxxxxxxxxxxxxxx> wrote:
>>>
>>>
>>> I found this on PHP.net:
>>>
>>> http://us.php.net/manual/en/function.exec.php
>>>
>>> Note: If you start a program using this function and want to leave
>>> it running in the background, you have to make sure that the output
>>> of that program is redirected to a file or some other output stream
>>> or else PHP will hang until the execution of the program ends.
>>>
>>>
>>> This is what I want... I want to execute another PHP script from the
>>> CLI, pass it a parameter and let it go to town after the HTTP
>>> request closes.
>>>
>>> Can someone please illustrate how I can make this work?
>>>
>>> Thx,
>>>
>>> Brad
>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/) To unsubscribe,
>>> visit: http://www.php.net/unsub.php
>
>
> It seems the script is calling itself even though I'm
> specifying a different script to run...
>
> test2.php
>
> <?php echo "Hello, World!"; ?>
>
>
> test1.php
>
> <?php
>       if( !isset($_POST['account_id']) ||
> $_POST['account_id'] == "" ) {
>               echo "account_id is required.";
>               exit;
>       }
>
>       // more stuff here...
>
>       exec("/usr/bin/php -q /path/to/test2.php", $output); // should run
> test2.php
>
>       echo "<pre>";
>       print_r($output);
>       echo "</pre>";
>
>>
>
>
> http://www.example.com/test1.php
>
> Expected Result:
>
> Array
> (
>     [0] => Hello, World!
> )
>
>
> Actual Result:
>
> Array
> (
>     [0] => X-Powered-By: PHP/5.2.1
>     [1] => Content-type: text/html
>     [2] =>
>     [3] => account_id is required.
> )
>
> Can anyone explain this and possibly help me find a solution?
>
> Thx,
>
> Brad

P.S. I am posting a form to the test1.php page with a valid account_id etc.;
after re-reading the message I thought someone might think it's printing
that result because nothing is posted.

Update:

I also found a file called "error_log" in the folder where test2.php
resides, full of several of these lines:

[01-May-2007 14:12:52] PHP Warning:  Zend Optimizer does not support this
version of PHP - please upgrade to the latest version of Zend Optimizer in
Unknown on line 0

Could that have something to do with why the script is calling on itself
instead of running the specified php script?

I recently had the hosting company rebuild PHP, first they did
--enable-suexec (to run PHP as CGI) and then later rebuilt again to
--enable-pcntl and --enable-sigchild, as I thought I would be needing that
functionality.  Did that break the CLI?

Please help, Thx.

Brad


It seems that the php binary isn't the same version as the php library
used in the webserver and so that there's a problem loading Zend. Are
you sure that the PHP binary is also replaced when they reinstalled
PHP?

Tijnema

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux