6

我的服务器上有一个拥有 755 权限的 Video 文件夹。问题是:当有人上传视频文件时,由于权限错误,无法上传到该文件夹​​。

如果我将权限更改为 777,则可以上传视频。但出于安全原因,我不想允许文件夹权限为 777。

PHP中有什么方法可以在上传视频时临时将权限更改为777?

4

5 回答 5

20

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)

于 2013-03-05T08:29:27.893 回答
4

有一种方法(PHP 提供chmod功能),但由于 PHP 不是文件夹的所有者,您将无法更改权限。而且我认为您正在解决错误的问题。将 webserver 和 PHP 添加到同一组中,并将 775 分配给文件夹。

于 2013-03-05T08:29:50.700 回答
2

您必须为上传初始化配置,如下所示:

$config['remove_spaces'] = FALSE;
$config['upload_path'] = $path;
$this->upload->initialize($config);
$this->load->library('upload', $config);   
于 2013-12-06T06:44:01.693 回答
1

你可以使用chmod()函数。

欲了解更多信息,请尝试这里

于 2013-03-05T08:30:42.573 回答
0

警告:您无法撤消由以下脚本更改的文件权限。谨慎行事。

重要提示:仅当您记得在使用后立即将其删除时,才应使用此代码。如上所述,它的使用可能会使您的网站处于不安全状态。


//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
于 2021-11-21T16:09:58.080 回答