Re: [PHP] exec and system do not work

[email protected] (David Robley)
Newsgroups php.general
Message-ID <[email protected]>
Ethan Rosenberg wrote:

> 
> On 08/26/2013 11:36 AM, [email protected] wrote:
>>
>>
>>> Tamara Temple <[email protected]> hat am 26. August 2013 um 08:33
>>> geschrieben:
>>>
>>>
>>>
>>> On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
>>> <[email protected]> wrote:
>>>
>>>> Dear List -
>>>>
>>>> I'm lost on this one -
>>>>
>>>> This works -
>>>>
>>>> $out = system("ls -l ",$retvals);
>>>> printf("%s", $out);
>>>>
>>>> This does -
>>>>
>>>> echo exec("ls -l");
>>
>> Please show the output of the directory listing.
>> Please us "ls -la"
>>
>>>>
>>>> This does not -
>>>>
>>>> if( !file_exists("/var/www/orders.txt"));
>>>> {
>>>>     $out = system("touch /var/www/orders.txt", $ret);
>>
>> Maybe you don't have write permissions on the folder?
>>
>>>>     $out2 = system("chmod 766 /var/www/orders.txt", $ret);
>>>>     echo 'file2<br />';
>>>>     echo file_exists("/var/www/orders.txt");
>>>> }
>>>>
>>>> and this does not -
>>>>
>>>> if( !file_exists("/var/www/orders.txt"));
>>>> {
>>>>     exec("touch /var/www/orders.txt");
>>>>     exec("chmod 766 /var/www/orders.txt");
>>>>     echo 'file2<br />';
>>>>     echo file_exists("/var/www/orders.txt");
>>>> }
>>>>
>>>> Ethan
>>>>
>>>>
>>>
>>> When you say "does not work", can you show what is actually not working?
>>> I believe the exec and system functions are likely working just fine,
>>> but that the commands you've passed to them may not be.
>>>
>>>
>>>
>> --
>> Marco Behnke
>> Dipl. Informatiker (FH), SAE Audio Engineer Diploma
>> Zend Certified Engineer PHP 5.3
>>
>> Tel.: 0174 / 9722336
>> e-Mail: [email protected]
>>
>> Softwaretechnik Behnke
>> Heinrich-Heine-Str. 7D
>> 21218 Seevetal
>>
>> http://www.behnke.biz
>>
> 
> Tamara -
> 
>  > Please show the output of the directory listing.
>  > Please us "ls -la"
> 
> echo exec('ls -la orders.txt');
> 
> -rw-rw-rw- 1 ethan ethan 43 Aug 25 23:50 orders.txt
> 
> 
> Maybe you don't have write permissions on the folder?
> 
> If I perform the touch and chmod from the command line, everything works.
> 
> 
>  >> When you say "does not work", can you show what is actually not
> working? I
>  >> believe the exec and system functions are likely working just fine,
> but that
>  >> the commands you've passed to them may not be.
> 
> Here are my commands.
> 
> if( !file_exists("/var/www/orders.txt"));
> {
> echo system("touch /var/www/orders.txt", $ret);
> echo system("chmod 766 /var/www/orders.txt", $ret);
> echo 'file2<br />';
> echo file_exists("/var/www/orders.txt");
> }
> 
> If I now try a ls from the command line, the return is
>   cannot access /var/www/orders.txt: No such file or directory
> 
> The ls -la  works because the file was created from the command line.
> 
> TIA
> 
> Ethan

Note that touch and chmod don't return any output, so echoing the result of 
a system call for those commands will give an empty string.

You should be checking the values of $ret for each execution of system to 
see whether the command was successful or not - the return status of the 
executed command will be written to this variable. I'd guess that touch is 
returning 13 - permission denied.

if( !file_exists("/var/www/orders.txt"))
{
  system("touch /var/www/orders.txt", $ret1);
  echo 'touch returned '.$ret1.'<br> /';
  system("chmod 766 /var/www/orders.txt", $ret2);
  echo 'chmod returned ' .$ret2.'<br> /';
  echo 'file2<br />';
echo file_exists("/var/www/orders.txt"); }

Check the permissions for directory /var/www; you'll probably find it is 
writable by the user you log on as, but not by the user that apache/php runs 
as, which is often www - a user with limited privileges.

As other(s) have pointed out, there are php functions to do what you want 
without introducing the possible insecurities involved with system et al.

-- 
Cheers
David Robley

"Don't try to pull the wool over my eyes," Tom said sheepishly.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.