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 に答える