如何在php文件中添加Chmod

时间:2013-11-24 08:32:28

标签: php permissions chmod

我想在我的网站上传一个脚本,这样用户就可以在本地服务器上的xampp上传图片,但是当我将它上传到我的网络服务器并上传图片时,它会通知我该文件夹没有权限, chmod到777所以我想知道如何以及将chmod放在这个脚本中的位置。注意我已经在我的服务器上创建了“Uploads”文件夹,只需告诉我如何chmod。谢谢

 <?php

if(isset($_POST['upload'])) {

$allowed_filetypes = array('.jpg','.jpeg','.png','.gif');
$max_filesize = 10485760;
$upload_path = 'uploads/';
$description = $_POST['imgdec'];

$filename = $_FILES['userfile']['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

if(!in_array($ext,$allowed_filetypes))
  die('The file you attempted to upload is not allowed.');

if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
  die('The file you attempted to upload is too large.');


if(!is_writable($upload_path))
  die('You cannot upload to the specified directory, please CHMOD it to 777.');

   if (file_exists("uploads/" . $_FILES["userfile"]["name"]))
      {
      echo $_FILES["userfile"]["name"] . " already exists. ";
      }
    else
      {

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {
   $query = "INSERT INTO uploads (name, description) VALUES ($filename, $description)"; 
   mysql_query($query);

echo 'Your file upload was successful!';


} else {
     echo 'There was an error during the file upload.  Please try again.';
}
}}

?>

2 个答案:

答案 0 :(得分:0)

Shell Exec将允许您从php运行chmod。

http://php.net/manual/en/function.shell-exec.php

如果您仍然遇到问题,请在整个上传目录中运行它。 chmod 777虽然是一个坏主意。

答案 1 :(得分:0)

你可以使用,

chmod("/somedir/somefile", 0755);  // octal; correct value of mode

语法: bool chmod(string $ filename,int $ mode)

filename:文件的路径。

模式:请注意,模式不会自动假定为八进制值,因此字符串(例如“g + w”)将无法正常工作。要确保预期的操作,您需要使用零(0)前缀模式:

mode参数由三个八进制数组件组成,这些组件指定所有者,所有者所在的用户组以及此顺序中的所有其他人的访问限制。可以通过为该目标用户群添加所需的权限来计算一个组件。数字1表示您授予执行权限,数字2表示您使文件可写,数字4表示您使文件可读。将这些数字相加以指定所需权利。

注意:当前用户是运行PHP的用户。它可能与您用于普通shell或FTP访问的用户不同。只有在大多数系统上拥有该文件的用户才能更改该模式。

参考:http://us3.php.net/chmod

linux命令模式:chmod -R 755 uploads //假设在您的上传文件夹中有不同的文件夹