RE: Prevent error output from shell_exec

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

 



The reason why popen() does not work for you is because you are calling
popen() with the wrong set of arguments.

You need to specify the they way you want to use the pipe.
You read a command just like a file, typically like:

 $cmd = "dir *.txt 2>NUL"; // supress stderr

 if ($pipe = popen($cmd, "r")) {
    while (!feof($pipe)) {
      // do your stuff
    }

 } else {
   // if needed, do some error handling
 }


USAGE:

According to the manual you can't use fread() with the popen():

"Returns a file pointer identical to that returned by fopen(), except that
it is unidirectional (may only be used for reading or writing) and must be
closed with pclose(). This pointer may be used with fgets(), fgetss(), and
fwrite()."

check out http://www.php.net/popen for details.

BIDIRECTIONAL COMMANDS:

As stated in the manual, you can only open the pipe for eitehr reading or
(an exlusive or) writing. Hence popen() will not help you here, in such case
you should use proc_open().

cheers

-----Original Message-----
From: Paul J. Smith
To: Svensson, B.A.T. (HKG)
Cc: php-windows@xxxxxxxxxxxxx
Sent: 23-5-2004 0:15
Subject: RE:  Prevent error output from shell_exec

I'm calling ps_exec.

		$handle = popen($cmd);
		$read = fread($handle, 2096);
		echo $read;
		pclose($handle);

Does nothing whereas system($cmd) or shel_exec($cmd) works fine, apart
from the output.  $read outputs nothing when I tested it.  When calling
popen, can you pass program parameters such as "dir *.tmp /p" ?  Maybe
this is why it's not working.  The $cmd I call has rather a lot of
command line parameters to go with it.
 

-----Original Message-----
From: Svensson, B.A.T. (HKG) [mailto:B.A.T.Svensson@xxxxxxx] 
Sent: 22 May 2004 22:59
To: 'php-windows@xxxxxxxxxxxxx '
Subject: RE:  Prevent error output from shell_exec

I can guarante you that popen() does work - I use it myself on a win2003
server. Since you can use shell_exec() I assume this has nothing to do
with safe_mode being switched on.

How do you call popen() ands what kind of dos program are you calling?


-----Original Message-----
From: Paul J. Smith

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


[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux