2

ルートには、「アプリケーション」、「システム」、「アップロード」の 3 つのフォルダーがあります。application/controllers/mycontroller.php には、次のコード行があります。

delete_files("../../uploads/$file_name");

ファイルは削除されず、../ や ../../../ などの多くのパス オプションを試しましたが、何かアイデアはありますか? ありがとう。

4

6 に答える 6

6

これには、CodeIgniter から提供された FCPATH 定数を使用します。

unlink(FCPATH . '/uploads/' . $filename);

base_url()HTTP URL を生成し、ファイルシステム パスの生成には使用できません。これが、CI パス定数の 1 つを使用する必要がある理由です。これらはフロントコントローラーファイル (index.php) で定義されています。

使用するものは次の 3 つです。

  • FCPATH- フロントコントローラーへのパス、通常は index.php
  • APPPATH- アプリケーション フォルダへのパス
  • BASEPATH- システム フォルダへのパス。
于 2012-09-07T18:01:00.597 に答える
1

$file_nameは変数です。関数を実行するには、それを独自の文字列に連結する必要があります。

delete_files("../../uploads/" . $file_name);

編集:

この文を確認してください:

echo base_url("uploads/" . $file_name);

有効なパスをエコーし​​ています。答えが「はい」の場合は、次のことを試してください。

$this->load->helper("url");
delete_files(base_url("uploads/" . $file_name));

「uploads」フォルダがルートディレクトリにあるとします。

編集2:

関数の使用unlink

$this->load->helper("url");
unlink(base_url("uploads/" . $file_name));
于 2012-09-07T14:59:44.917 に答える
0

次のコードを試してください。

$imagepath = $config['upload_path'];
unlink($imagepath . $images);

また

delete_files($imagepath . $images);
于 2016-04-01T09:24:35.287 に答える
0
 public function deleteContent($id)
 {  
    $this->db->where('Filename',$id);
    $this->db->delete('tableName',array('Filename'=>$id));
    if (unlink("upload/folderName/".$id)) 
    {
      redirect($_SERVER['HTTP_REFERER']);
    }
  }
于 2019-08-19T10:34:51.880 に答える