Discussion:
exec and system do not work
Ethan Rosenberg
2013-08-26 03:41:02 UTC
Permalink
Dear List -

I'm lost on this one -

This works -

$out = system("ls -l ",$retvals);
printf("%s", $out);

This does -

echo exec("ls -l");

This does not -

if( !file_exists("/var/www/orders.txt"));
{
$out = system("touch /var/www/orders.txt", $ret);
$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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Sorin Badea
2013-08-26 03:50:05 UTC
Permalink
*/var/www* is usually under *www* user. It may be a permissions problem.


On Mon, Aug 26, 2013 at 6:41 AM, Ethan Rosenberg <
Post by Ethan Rosenberg
Dear List -
I'm lost on this one -
This works -
$out = system("ls -l ",$retvals);
printf("%s", $out);
This does -
echo exec("ls -l");
This does not -
if( !file_exists("/var/www/orders.**txt"));
{
$out = system("touch /var/www/orders.txt", $ret);
$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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
Sorin Badea - Software Engineer
Robert Cummings
2013-08-26 06:18:29 UTC
Permalink
Post by Ethan Rosenberg
Dear List -
I'm lost on this one -
This works -
$out = system("ls -l ",$retvals);
printf("%s", $out);
This does -
echo exec("ls -l");
This does not -
if( !file_exists("/var/www/orders.txt"));
{
$out = system("touch /var/www/orders.txt", $ret);
$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
Hi Ethan,

Is there a reason you're using shell commands to achieve the following:

<?php

$path = '/var/www/orders.txt';
if( !file_exists( $path ) )
{
if( !touch( $path ) )
{
echo 'Failed to touch file into existence: '.$path."\n";
}
else
{
if( !chmod( $path, 0766 ) )
{
echo 'Failed to update file permissions: '.$path."\n";
}
}
}

?>

Also, why are you setting the executable bit on a text file? :)

Cheers,
Rob.
--
E-Mail Disclaimer: Information contained in this message and any
attached documents is considered confidential and legally protected.
This message is intended solely for the addressee(s). Disclosure,
copying, and distribution are prohibited unless authorized.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Tamara Temple
2013-08-26 06:33:39 UTC
Permalink
Post by Ethan Rosenberg
Dear List -
I'm lost on this one -
This works -
$out = system("ls -l ",$retvals);
printf("%s", $out);
This does -
echo exec("ls -l");
This does not -
if( !file_exists("/var/www/orders.txt"));
{
$out = system("touch /var/www/orders.txt", $ret);
$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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
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.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
m***@behnke.biz
2013-08-26 15:36:39 UTC
Permalink
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
   $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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
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.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
Marco Behnke
Dipl. Informatiker (FH), SAE Audio Engineer Diploma
Zend Certified Engineer PHP 5.3

Tel.: 0174 / 9722336
e-Mail: ***@behnke.biz

Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal

http://www.behnke.biz
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Ethan Rosenberg
2013-08-26 18:41:14 UTC
Permalink
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Jim Giner
2013-08-26 19:28:05 UTC
Permalink
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Ethan - YOU'RE DOING IT AGAIN!!!

Either you are not using error checking AGAIN!!
OR
You are showing us re-typed in code that YOU DIDN"T ACTUALLY RUN.

I've told you multiple times that you need to do these two things and
you are back at it again.

The sample php above has plain simple syntax errors that would keep it
from running, which error checking would tell you IF YOU RAN IT.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Ethan Rosenberg, PhD
2013-08-26 21:01:05 UTC
Permalink
Post by Jim Giner
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Ethan - YOU'RE DOING IT AGAIN!!!
Either you are not using error checking AGAIN!!
OR
You are showing us re-typed in code that YOU DIDN"T ACTUALLY RUN.
I've told you multiple times that you need to do these two things and
you are back at it again.
The sample php above has plain simple syntax errors that would keep it
from running, which error checking would tell you IF YOU RAN IT.
Jim -

Thank you.

I don't totally understand your reply ...

but I will try to answer....

The code is taken from an operating program. My error checking is set
to maximum sensitivity.

If you would point out my syntax errors, I will fix them.

TIA

Ethan
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Jim Giner
2013-08-27 11:39:28 UTC
Permalink
Post by Ethan Rosenberg, PhD
Post by Jim Giner
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Ethan - YOU'RE DOING IT AGAIN!!!
Either you are not using error checking AGAIN!!
OR
You are showing us re-typed in code that YOU DIDN"T ACTUALLY RUN.
I've told you multiple times that you need to do these two things and
you are back at it again.
The sample php above has plain simple syntax errors that would keep it
from running, which error checking would tell you IF YOU RAN IT.
Jim -
Thank you.
I don't totally understand your reply ...
but I will try to answer....
The code is taken from an operating program. My error checking is set
to maximum sensitivity.
If you would point out my syntax errors, I will fix them.
TIA
Ethan
you have semis after your if lines - therefore no logic gets executed.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
m***@behnke.biz
2013-08-26 19:58:12 UTC
Permalink
  > 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
Please supply the complete output. Especially the rights for . and ..
Maybe you don't have write permissions on the folder?
If I perform the touch and chmod from the command line, everything works.
cli and ww are different users.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Tamara Temple
2013-08-26 20:44:21 UTC
Permalink
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
You're replying to me about something someone else asked you.
Post by Ethan Rosenberg
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
David Robley
2013-08-26 23:33:31 UTC
Permalink
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Ethan Rosenberg, PhD
2013-08-27 00:32:33 UTC
Permalink
Ethan Rosenberg, PhD
/Pres/CEO/
*Hygeia Biomedical Research, Inc*
2 Cameo Ridge Road
Monsey, NY 10952
T: 845 352-3908
F: 845 352-7566
Post by David Robley
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Jasper Kips
2013-08-27 00:49:37 UTC
Permalink
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
Post by Ethan Rosenberg, PhD
Ethan Rosenberg, PhD
/Pres/CEO/
*Hygeia Biomedical Research, Inc*
2 Cameo Ridge Road
Monsey, NY 10952
T: 845 352-3908
F: 845 352-7566
Post by David Robley
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
David Robley
2013-08-27 01:01:49 UTC
Permalink
Post by Ethan Rosenberg, PhD
Ethan Rosenberg, PhD
/Pres/CEO/
*Hygeia Biomedical Research, Inc*
2 Cameo Ridge Road
Monsey, NY 10952
T: 845 352-3908
F: 845 352-7566
Post by David Robley
Post by Ethan Rosenberg
Post by m***@behnke.biz
On Aug 25, 2013, at 10:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
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"
Post by Ethan Rosenberg
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?
Post by Ethan Rosenberg
$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
Softwaretechnik Behnke
Heinrich-Heine-Str. 7D
21218 Seevetal
http://www.behnke.biz
Tamara -
Post by m***@behnke.biz
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.
Post by m***@behnke.biz
When you say "does not work", can you show what is actually not
working? I
Post by m***@behnke.biz
believe the exec and system functions are likely working just fine,
but that
Post by m***@behnke.biz
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
Non-zero return value indicates an error; touch failed and as a result there
is no file to chmod, hence chmod also failed.
Post by Ethan Rosenberg, PhD
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
/var/www is only writeable by the user ethan
--
Cheers
David Robley

INTERLACE: To tie two boots together.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Tim Streater
2013-08-26 21:32:00 UTC
Permalink
Post by Ethan Rosenberg, PhD
Post by Ethan Rosenberg
if( !file_exists("/var/www/orders.txt"));
^
|
What's the semicolon doing there -----------+
Post by Ethan Rosenberg, PhD
Post by Ethan Rosenberg
{
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 you would point out my syntax errors, I will fix them.
See above.
--
Cheers -- Tim
Daniel Brown
2013-08-27 16:34:14 UTC
Permalink
On Sun, Aug 25, 2013 at 11:41 PM, Ethan Rosenberg
Post by Ethan Rosenberg
Dear List -
I'm lost on this one -
This works -
$out = system("ls -l ",$retvals);
printf("%s", $out);
This does -
echo exec("ls -l");
This does not -
if( !file_exists("/var/www/orders.txt"));
{
$out = system("touch /var/www/orders.txt", $ret);
$out2 = system("chmod 766 /var/www/orders.txt", $ret);
echo 'file2<br />';
echo file_exists("/var/www/orders.txt");
}
<?php echo `whoami`; ?>
--
</Daniel P. Brown>
Network Infrastructure Manager
http://www.php.net/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Loading...