我想在我的网站上传一个脚本,这样用户就可以在本地服务器上的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.';
}
}}
?>
答案 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访问的用户不同。只有在大多数系统上拥有该文件的用户才能更改该模式。
linux命令模式:chmod -R 755 uploads
//假设在您的上传文件夹中有不同的文件夹