Re: exec and system do not work

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

 



Ethan Rosenberg wrote:

> 
> On 08/26/2013 11:36 AM, marco@xxxxxxxxxx wrote:
>>
>>
>>> Tamara Temple <tamouse.lists@xxxxxxxxx> hat am 26. August 2013 um 08:33
>>> geschrieben:
>>>
>>>
>>>
>>> On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
>>> <erosenberg@xxxxxxxxxxxxxxxxxxxx> 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: marco@xxxxxxxxxx
>>
>> 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.


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





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux