Re: [PHP] exec and system do not work

[email protected] (Jasper Kips)
Newsgroups php.general
Message-ID <[email protected]>
Ethan,
A return code of not 0 means an error occured.
Probably /var/www is not writable. Test that one by doing this:
$a = is_writable("/var/www);
var_dump($a);
If that says anything else than (boolean) TRUE, you can't write in the directory. 


Sincerely,

Jasper Kips


Op 27 aug. 2013, om 02:32 heeft "Ethan Rosenberg, PhD" <[email protected]> het volgende geschreven:

> 
> 
> Ethan Rosenberg, PhD
> /Pres/CEO/
> *Hygeia Biomedical Research, Inc*
> 2 Cameo Ridge Road
> Monsey, NY 10952
> T: 845 352-3908
> F: 845 352-7566
> [email protected]
> 
> On 08/26/2013 07:33 PM, David Robley wrote:
>> 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.
>> 
> 
> David -
> 
> touch returned 1
> /chmod returned 1
> 
> rosenberg:/var/www# ls orders.txt
> ls: cannot access orders.txt: No such file or directory
> 
> rosenberg:/var# ls -ld www
> drwxr-xr-x 37 ethan ethan 20480 Aug 26 20:15 www
> 
> TIA
> 
> Ethan
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
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.