Re: [PHP] Problems with exec() on windows

2009-04-12 Thread henrikolsen
I can confirm the presence of the same issue on my installation, 5.2.9-2 on 
Windows XP. Very annoying bug.

--
This message was sent on behalf of henrikol...@gmail.com at openSubscriber.com
http://www.opensubscriber.com/message/php-general@lists.php.net/11719414.html

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



[PHP] Problems with exec() on windows

2009-03-19 Thread Kyohere Luke
Hi,
I'm trying to use exec to call gammu.exe and send sms on windows XP.

This works from commandline:

C:\path\to\gammu.exe 1 --sendsms EMS 200 -text test1 test2

But if I run it through php like this:

$command = \C:\path\to\gammu.exe\ --sendsms EMS 200 -text \test1
test2\.;
@exec($command, $response, $retval);

This always fails, returns 1 and the response is empty.

If the last argument is a string with no spaces, and the double quotes were
omitted, it works perfectly.

If the double quotes are added around the string with no spaces, it fails
again, which makes me believe that the problem is with the double quotes.

I've used procmon and it shows that when the double quotes are added around
the last argument, gammu.exe is not even called at all.

Problem is that the double quotes are required by gammu to send an sms with
spaces in it.

Any ideas? :-(

Luke


Re: [PHP] Problems with exec() on windows

2009-03-19 Thread haliphax
On Thu, Mar 19, 2009 at 9:19 AM, Kyohere Luke pr0...@gmail.com wrote:
 Hi,
 I'm trying to use exec to call gammu.exe and send sms on windows XP.

 This works from commandline:

 C:\path\to\gammu.exe 1 --sendsms EMS 200 -text test1 test2

 But if I run it through php like this:

 $command = \C:\path\to\gammu.exe\ --sendsms EMS 200 -text \test1
 test2\.;
 @exec($command, $response, $retval);

 This always fails, returns 1 and the response is empty.

 If the last argument is a string with no spaces, and the double quotes were
 omitted, it works perfectly.

 If the double quotes are added around the string with no spaces, it fails
 again, which makes me believe that the problem is with the double quotes.

 I've used procmon and it shows that when the double quotes are added around
 the last argument, gammu.exe is not even called at all.

 Problem is that the double quotes are required by gammu to send an sms with
 spaces in it.

I'm not sure if it will help, but the escapeshellarg() function looks
like it might handle all that tricky slash-and-quote-adding for you:

http://php.net/escapeshellarg

Other than that, perhaps proc_open() would do what you need it to by
completely separating the command's arguments from itself.

http://php.net/proc_open

HTH,


-- 
// Todd

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



Re: [PHP] Problems with exec() on windows

2009-03-19 Thread haliphax
On Thu, Mar 19, 2009 at 9:25 AM, haliphax halip...@gmail.com wrote:
 On Thu, Mar 19, 2009 at 9:19 AM, Kyohere Luke pr0...@gmail.com wrote:
 Hi,
 I'm trying to use exec to call gammu.exe and send sms on windows XP.

 This works from commandline:

 C:\path\to\gammu.exe 1 --sendsms EMS 200 -text test1 test2

 But if I run it through php like this:

 $command = \C:\path\to\gammu.exe\ --sendsms EMS 200 -text \test1
 test2\.;
 @exec($command, $response, $retval);

 This always fails, returns 1 and the response is empty.

 If the last argument is a string with no spaces, and the double quotes were
 omitted, it works perfectly.

 If the double quotes are added around the string with no spaces, it fails
 again, which makes me believe that the problem is with the double quotes.

 I've used procmon and it shows that when the double quotes are added around
 the last argument, gammu.exe is not even called at all.

 Problem is that the double quotes are required by gammu to send an sms with
 spaces in it.

 I'm not sure if it will help, but the escapeshellarg() function looks
 like it might handle all that tricky slash-and-quote-adding for you:

 http://php.net/escapeshellarg

 Other than that, perhaps proc_open() would do what you need it to by
 completely separating the command's arguments from itself.

 http://php.net/proc_open

Also--if you're only concerned with a one-way process tunnel (read or
write, but not both) then maybe popen() instead of proc_open() would
be preferable for overhead/speed. Of course, that's if either of them
do what you're looking for.


-- 
// Todd

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