php调用linux命令更改文件权限

发布网友 发布时间:2022-04-21 17:41

我来回答

5个回答

热心网友 时间:2022-04-06 02:05

我们的服务器是这样做的:
php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件的权限,当然,属组最好不要是root,你可以为该文件夹改个其它普通用户组。

改apache/php的运行用户方法不安全,不建议使用。

热心网友 时间:2022-04-06 03:23

在php教程中调用linux命令的函数是
string   exec(string   command,   string   [array],   int   [return_var]);

exec( "vpopmail ");

echo exec('whoami');

再看一实例

function exec_enabled() {
  $disabled = explode(', ', ini_get('disable_functions'));
  return !in_array('exec', $disabled);
}
<?php 
$tmp = exec("c:\Image\gm.exe convert c:\Image\file1.tiff c:\Image\file1.jpg", $results); 
?>

还有一种命令是

php通过函数system()调用系统命令。

string system ( string $command [, int &$return_var ] )

实例

system('asterisk -vvvvvvvvvvvc');

system()是一样的函数C的,它执行给定的命令和输出结果的版本。该system()的调用也尝试自动刷新网页服务器的输出缓冲器在每个输出
行如果PHP运行作为服务器模块。如果你需要执行一个命令,并已全部通过直接从背面没有任何干扰的命令数据,使用passthru()函数。

$last_line = system('ls', $retval);

function my_exec($cmd, $input='') 
         {$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes); 
          fwrite($pipes[0], $input);fclose($pipes[0]); 
          $stdout=stream_get_contents($pipes[1]);fclose($pipes[1]); 
          $stderr=stream_get_contents($pipes[2]);fclose($pipes[2]); 
          $rtn=proc_close($proc); 
          return array('stdout'=>$stdout, 
                       'stderr'=>$stderr, 
                       'return'=>$rtn 
                      ); 
         } 
var_export(my_exec('echo -e $(</dev/stdin) | wc -l', 'h\nel\nlo'));
实例三
$cmd = "date";
   $output = system($cmd); 
   printf("System Output: $output ");
   exec($cmd, $results); 
   printf("Exec Output: {$results[0]} ");

php调用linux命令的权限问题


你可以使用定时任务执行你要调用的php,这时的权限就是root,
php通过函数system()调用系统命令


php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的
权限,而apache属于这个组就可以改写该目录下所有文件的权限,当然,属组最好不要是root,你可以为该文件夹改个其它普通用户组。

改apache/php的运行用户方法不安全

热心网友 时间:2022-04-06 04:57

<?php // 说明:摘录自 User manager for PureFTPd 的权限显示函数 // 整理:http://www.CodeBit.cn function DisplayFilePermissions($Mode) { // Determine Type if ($Mode & 0x1000) { $Type = 'p'; // FIFO pipe } else if ($Mode & 0x2000) { $Type = 'c'; // Character special } else if ($Mode & 0x4000) { $Type = 'd'; // Directory } else if ($Mode & 0x6000) { $Type = 'b'; // Block special } else if ($Mode & 0x8000) { $Type = '-'; // Regular } else if ($Mode & 0xA000) { $Type = 'l'; // Symbolic Link } else if ($Mode & 0xC000) { $Type = 's'; // Socket } else { $Type = 'u'; // UNKNOWN } // Determine permissions $Owner['read'] = ($Mode & 00400) ? 'r' : '-'; $Owner['write'] = ($Mode & 00200) ? 'w' : '-'; $Owner['execute'] = ($Mode & 00100) ? 'x' : '-'; $Group['read'] = ($Mode & 00040) ? 'r' : '-'; $Group['write'] = ($Mode & 00020) ? 'w' : '-'; $Group['execute'] = ($Mode & 00010) ? 'x' : '-'; $World['read'] = ($Mode & 00004) ? 'r' : '-'; $World['write'] = ($Mode & 00002) ? 'w' : '-'; $World['execute'] = ($Mode & 00001) ? 'x' : '-'; // Adjust for SUID, SGID and sticky bit if ($Mode & 0x800) $Owner['execute'] = ($Owner['execute'] == 'x') ? 's' : 'S'; if ($Mode & 0x400) $Group['execute'] = ($Group['execute'] == 'x') ? 's' : 'S'; if ($Mode & 0x200) $World['execute'] = ($World['execute'] == 'x') ? 't' : 'T'; return $Type . $Owner['read'] . $Owner['write'] . $Owner['execute'] . $Group['read'] . $Group['write'] . $Group['execute'] . $World['read'] . $World['write'] . $World['execute']; } $perms = fileperms( '/etc/passwd' ); echo DisplayFilePermissions($perms); ?>

热心网友 时间:2022-04-06 06:49

一种方法,修改文件权限,允许去php程序去修改
另外一种方法,修改php运行程序的执行用户,

热心网友 时间:2022-04-06 08:57

php 用户 访问文件 是 apache 用户 的权限!你看下 那个文件 是怎么样的权限设置

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com