ルートには、「アプリケーション」、「システム」、「アップロード」の 3 つのフォルダーがあります。application/controllers/mycontroller.php には、次のコード行があります。
delete_files("../../uploads/$file_name");
ファイルは削除されず、../ や ../../../ などの多くのパス オプションを試しましたが、何かアイデアはありますか? ありがとう。
ルートには、「アプリケーション」、「システム」、「アップロード」の 3 つのフォルダーがあります。application/controllers/mycontroller.php には、次のコード行があります。
delete_files("../../uploads/$file_name");
ファイルは削除されず、../ や ../../../ などの多くのパス オプションを試しましたが、何かアイデアはありますか? ありがとう。
これには、CodeIgniter から提供された FCPATH 定数を使用します。
unlink(FCPATH . '/uploads/' . $filename);
base_url()
HTTP URL を生成し、ファイルシステム パスの生成には使用できません。これが、CI パス定数の 1 つを使用する必要がある理由です。これらはフロントコントローラーファイル (index.php) で定義されています。
使用するものは次の 3 つです。
FCPATH
- フロントコントローラーへのパス、通常は index.phpAPPPATH
- アプリケーション フォルダへのパスBASEPATH
- システム フォルダへのパス。$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));
次のコードを試してください。
$imagepath = $config['upload_path'];
unlink($imagepath . $images);
また
delete_files($imagepath . $images);
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']);
}
}