Re: [PHP] exec() and redirect output of program [SOLVED]

2007-05-01 Thread Daniel Brown

   Brad,

   The error_log file is written by httpd (Apache).  It actually just
sounds like they need to upgrade their Zend Optimizer, which is a cinch to
do.

On 5/1/07, Brad Fuller <[EMAIL PROTECTED]> wrote:


Tijnema ! wrote:
> On 5/1/07, Brad Fuller <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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
>>>
>>> 
>>>
>>>
>>> test1.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 "";
>>>   print_r($output);
>>>   echo "";
>>>

>>>
>>>
>>> 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


Well, I finally got it working... I simply call "php" instead of using the
full path "/usr/bin/php".  When I type "which php" from the shell I get
"/usr/local/bin/php" so I'm not sure if the CLI binary maybe got moved
when
we switched to CGI mode or what, anyway I still get the Zend Optimizer
Warning message when I run the script from the command line but for some
reason it doesn't write to error_log when the script is called from the
exec() function.. Maybe that's simply because the errors are being
redirected to /dev/null... But anyway it works now :)  I will call up our
hosting company and see if we can do something about that Zend Optimizer
warning.

Thanks Daniel and Tijnema for the help.

Cheers,

Brad

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





--
Daniel P. Brown
[office] (570-) 587-7080 Ext. 272
[mobile] (570-) 766-8107


RE: [PHP] exec() and redirect output of program [SOLVED]

2007-05-01 Thread Brad Fuller
Tijnema ! wrote:
> On 5/1/07, Brad Fuller <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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
>>> 
>>> 
>>> 
>>> 
>>> test1.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 "";
>>>   print_r($output);
>>>   echo "";
>>> 
 
>>> 
>>> 
>>> 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


Well, I finally got it working... I simply call "php" instead of using the
full path "/usr/bin/php".  When I type "which php" from the shell I get
"/usr/local/bin/php" so I'm not sure if the CLI binary maybe got moved when
we switched to CGI mode or what, anyway I still get the Zend Optimizer
Warning message when I run the script from the command line but for some
reason it doesn't write to error_log when the script is called from the
exec() function.. Maybe that's simply because the errors are being
redirected to /dev/null... But anyway it works now :)  I will call up our
hosting company and see if we can do something about that Zend Optimizer
warning.

Thanks Daniel and Tijnema for the help.

Cheers,

Brad

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