Re: [PHP] Problems with exec() on windows
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
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
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
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