我的服务器上有一个拥有 755 权限的 Video 文件夹。问题是:当有人上传视频文件时,由于权限错误,无法上传到该文件夹。
如果我将权限更改为 777,则可以上传视频。但出于安全原因,我不想允许文件夹权限为 777。
PHP中有什么方法可以在上传视频时临时将权限更改为777?
我的服务器上有一个拥有 755 权限的 Video 文件夹。问题是:当有人上传视频文件时,由于权限错误,无法上传到该文件夹。
如果我将权限更改为 777,则可以上传视频。但出于安全原因,我不想允许文件夹权限为 777。
PHP中有什么方法可以在上传视频时临时将权限更改为777?
PHP 提供了一个函数,chmod()
用于任务。
尝试将指定文件的模式更改为 mode 中给定的模式。
你可以把它放在一个if
语句中,如果它返回false,你可以跳过上传文件部分。
用法会像
if( chmod($path, 0777) ) {
// more code
chmod($path, 0755);
}
else
echo "Couldn't do it.";
如chmod 功能手册中所述,$mode
必须为八进制格式 - 前导零,即chmod($path, 0777)
有一种方法(PHP 提供chmod
功能),但由于 PHP 不是文件夹的所有者,您将无法更改权限。而且我认为您正在解决错误的问题。将 webserver 和 PHP 添加到同一组中,并将 775 分配给文件夹。
您必须为上传初始化配置,如下所示:
$config['remove_spaces'] = FALSE;
$config['upload_path'] = $path;
$this->upload->initialize($config);
$this->load->library('upload', $config);
你可以使用chmod()
函数。
欲了解更多信息,请尝试这里
警告:您无法撤消由以下脚本更改的文件权限。谨慎行事。
重要提示:仅当您记得在使用后立即将其删除时,才应使用此代码。如上所述,它的使用可能会使您的网站处于不安全状态。
//replace dirname(__FILE__) with desired folder.
file_fix_directory(dirname(__FILE__));
function file_fix_directory($dir, $nomask = array('.', '..')) {
if (is_dir($dir)) {
// Try to make each directory world writable.
if (@chmod($dir, 0777)) {
echo "Made writable: " . $dir . "
";
}
}
if (is_dir($dir) && $handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (!in_array($file, $nomask) && $file[0] != '.') {
if (is_dir("$dir/$file")) {
// Recurse into subdirectories
file_fix_directory("$dir/$file", $nomask);
}
else {
$filename = "$dir/$file";
// Try to make each file world writable.
if (@chmod($filename, 0666)) {
echo "Made writable: " . $filename . "
";
}
}
}
}
closedir($handle);
}
}
或者您可以为此使用终端
chmod -R 755 public_html/test