Re: [PHP] exec and system do not work
[email protected] ("Ethan Rosenberg, PhD")
| Newsgroups | php.general |
|---|---|
| Organization | Hygeia Biomedical Research, Inc. |
| Message-ID | <[email protected]> |
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