9

私はこの基本的なスクリプトを使用していました:

$folderPath = "../path/to/$folder/";
mkdir("$folderPath");

このディレクトリを作成し、そこに写真をアップロードします。これを 4 ~ 5 か月間続けていますが、Web ブラウザーでフォルダーの内容を表示しようとすると、突然「FORBIDDEN」エラーが発生し始めます。

ディレクトリは同じように作成されており、写真は問題なくアップロードされていますが、写真にアクセスできません

スクリプトを書き直し、chmod を使用して権限を変更しようとしましたが、まったく運がありません

すべての古いフォルダーは次のように作成されていました: -w- rwx rx rx

これを再現することはできません

スクリプトに chmod 行を追加してみました:

$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);

しかし、同じ権限を再作成することはできません。chmod の仕組みを理解しようとしていますが、この非常に基本的な機能を再び適切に機能させる方法がわかりません。

4

4 に答える 4

12

「Options -Indexes」オプションが言及されている HTAccess ファイルを探してみてください。これは主に Web ブラウザーでフォルダーの内容を表示しないために使用されるためです。ファイルは次の方法で検索する必要があります:-

  • フォルダー " root_folder/sales/inventory/$folder/" 内。ここで、" $folder" はコードで言及されているとおりです。
  • 見つからない場合は、フォルダ「root_folder/sales/inventory/」で試してください。
  • 見つからない場合は、フォルダ「root_folder/sales/」で試してください。
  • 見つからない場合は、フォルダ「root_folder/」で試してください。

HTAccess ファイルに書かれた "Options -Indexes" のコードを取得したら、そこからそのコード行を削除/コメントするか、" $folder"の必要なフォルダーに別の HTAccess ファイルを書き込むこともできます。 「オプション索引」。

また、PHPページでは、ロジックは次のようにする必要があります:-

<?php
$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);

// Use of "copy()" / "move_uploaded_file()" function here, using some "$targetFile" variable.
chmod($targetFile, 0755);
?>

これは、アップロードされたファイルを「$folder」フォルダーからリンク解除/削除するときに役立ちます。

それが役に立てば幸い。

于 2010-09-22T12:07:50.830 に答える
2

共有環境にいる場合は、安全のために、アップロード後にchownすることもできます。特に、仮想ホスト以外のユーザーで Web サーバーを実行している場合は、アクセス許可があります (例: "nobody" vs "mysite")。これは、cPanel サーバー、FWIW で一般的です。

于 2012-09-18T00:57:43.907 に答える