1

我目前正在尝试在本地主机上为 .csv 文件上传表单,但是我还不能用它上传文件。这是因为我需要 chmod 本地主机上的目录。目前我正在使用这个:

$allowed_filetypes = array('.csv');
$max_filesize = 524288;
$upload_path = '/csvfiles/';

$filename = $_FILES['userfile']['name'];

// Check if we can upload to the specified path, if not DIE and inform the user.

if(!is_writable($upload_path)){
 $chmod = chmod ($upload_path & "/" & $_FILES, 777);

 // Upload the file to your specified path.
 if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)){
    echo 'Upload succesful';
    }else{
    echo 'There was an error during the file upload.  Please try again. :('; // It failed :(.
         }
    } else
    die ('You cannot upload to the specified directory, please CHMOD the directory.');

我不确定这行代码需要是什么:

$chmod = chmod ($upload_path & "/" & $_FILES, 777);

我的脚本不断死亡,目录没有任何反应。

另外,如果您有此类事情的经验,请随时调试!:D

Side note: My OS is RHEL5

提前致谢,

-最大限度

4

2 回答 2

3

1) 检查它是否已经可写 2) 如果不是,使用 exec() 来 chmod。

if(!is_writable($path)) {
    exec("chmod -R 777 $path");
} 

// code for uploading.

这段代码可以做得更漂亮,例如将它包装成一个递归函数,但我会把它留给你:)

  • 此信息基于您实际拥有 chmod 目录的权限。
于 2012-12-07T11:00:07.563 回答
2

您正在尝试将$_FILES数组连接到一个字符串以创建最终的路径chmod,这可能就是问题所在。如果我理解正确,您需要将其更改为:

$chmod = chmod ($upload_path & "/" & $filename, 777);

或者

$chmod = chmod ($upload_path & "/" & $_FILES['userfile']['name'], 777);

所以你将文件名附加 到$upload_path.

于 2012-12-07T10:59:45.420 回答