无法从 Codeigniter 中的 'uploads' 个文件夹中删除图像
Not able to delete images from 'uploads' folders in Codeigniter
我在删除 XAMPP 中的一条记录时试图从 'uploads' 文件夹中删除所有用户数据,包括所有图像。到目前为止,它正在删除 table 中的行,但是对于上传文件夹中的图像,我收到此错误,
Message: unlink(uploads/property-images/): Permission denied
当我从模型中 print_r($rowId);
时,它很好地回显图像数组。我确信我在模型中可能做错了什么,因为删除函数必须是一个数组,但我不确定该怎么做。
但与此同时,在我的其他脚本中,我已经使用取消链接成功删除并替换了用户的个人资料图片。我想如果这样做比 'Permission' 这次应该不是问题。唯一不同的是,这次我有一组在脚本中爆炸的图像。
在我的控制器中:
function delete_listing_id() {
if($this->session->userdata('is_logged_in')){
$id = $this->uri->segment(3);
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
$this->my_listings_model->delete_listing_images($images_urls);
$this->my_listings_model->delete_listing_id($id);
$this->my_listings();
}
型号:
function get_property_all_images_url($id) {
$this->db->select('property_images');
$this->db->from('vbc_property_images');
$this->db->where('property_ref_id', $id);
$query = $this->db->get();
$query_result = $query->result_array();
if (empty($query_result)) {
return FALSE;
}
elseif (count($query_result) > 1) {
return 0;
}
else{
$rowId = explode(',',$query_result[0]['property_images']);
return $rowId;
}
}
function delete_listing_id($id){
$this->db->delete('vbc_vacation_item_attri', array('vbc_item_id' => $id));
$this->db->delete('vbc_property_amenities', array('v_ref_id' => $id));
$this->db->delete('vbc_property_images', array('property_ref_id' => $id));
}
function delete_listing_images($images_urls) {
unlink('uploads/property-images/'.$images_urls);
return TRUE;
}
请检查文件夹的权限。文件夹权限应为 0777 。
您也可以查看 this
更新:
如果您的 $image_urls 是一个数组,那么您应该在图像删除函数中执行
function delete_listing_images($images_urls) {
foreach($image_urls as $image_url) //deletes all urls found
{
unlink('uploads/property-images/'.$image_url);
}
return TRUE;
}
像这样更改您的控制器:
function delete_listing_id() {
if($this->session->userdata('is_logged_in')){
$id = $this->uri->segment(3);
$this->my_listings_model->delete_listing_id($id);
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
if(!empty($images_urls))
{
foreach($images_urls as $image_url);
{
$this->my_listings_model->delete_listing_images($image_url);
}
}
$this->my_listings();
}
并设置你的模型,因为它没有在其中使用 foreach
检查您的数组键并以这种方式传递它:
foreach($images_urls as $image_url){
unlink('uploads/property-images/'.$image_url['your_key']);
}
如果您在数组中没有任何特定键:您的数组就像这样:array('0'=>'a','1'=>'b' ).这样做:
foreach($images_urls as $image_url){
unlink('uploads/property-images/'.$image_url);
}
终于成功了。感谢大家的支持。
必须更换控制器:
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
来自
$images_urls['images_urls'] = $this->my_listings_model->get_property_all_images_url($id);
并且在模型中所有 delete_listing_images(函数):
function delete_listing_images($images_urls) {
$rows = $images_urls;
if (count($rows) > 0) {
foreach($rows as $row) {
$number_of_images = count($row);
}
}
if(!empty($images_urls)) {
for($i=0; $i<$number_of_images;$i++){
foreach($images_urls as $image_url); {
unlink('uploads/property-images/'.$image_url[$i]);
}
}
}
return TRUE;
}
我在删除 XAMPP 中的一条记录时试图从 'uploads' 文件夹中删除所有用户数据,包括所有图像。到目前为止,它正在删除 table 中的行,但是对于上传文件夹中的图像,我收到此错误,
Message: unlink(uploads/property-images/): Permission denied
当我从模型中 print_r($rowId);
时,它很好地回显图像数组。我确信我在模型中可能做错了什么,因为删除函数必须是一个数组,但我不确定该怎么做。
但与此同时,在我的其他脚本中,我已经使用取消链接成功删除并替换了用户的个人资料图片。我想如果这样做比 'Permission' 这次应该不是问题。唯一不同的是,这次我有一组在脚本中爆炸的图像。
在我的控制器中:
function delete_listing_id() {
if($this->session->userdata('is_logged_in')){
$id = $this->uri->segment(3);
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
$this->my_listings_model->delete_listing_images($images_urls);
$this->my_listings_model->delete_listing_id($id);
$this->my_listings();
}
型号:
function get_property_all_images_url($id) {
$this->db->select('property_images');
$this->db->from('vbc_property_images');
$this->db->where('property_ref_id', $id);
$query = $this->db->get();
$query_result = $query->result_array();
if (empty($query_result)) {
return FALSE;
}
elseif (count($query_result) > 1) {
return 0;
}
else{
$rowId = explode(',',$query_result[0]['property_images']);
return $rowId;
}
}
function delete_listing_id($id){
$this->db->delete('vbc_vacation_item_attri', array('vbc_item_id' => $id));
$this->db->delete('vbc_property_amenities', array('v_ref_id' => $id));
$this->db->delete('vbc_property_images', array('property_ref_id' => $id));
}
function delete_listing_images($images_urls) {
unlink('uploads/property-images/'.$images_urls);
return TRUE;
}
请检查文件夹的权限。文件夹权限应为 0777 。 您也可以查看 this
更新:
如果您的 $image_urls 是一个数组,那么您应该在图像删除函数中执行
function delete_listing_images($images_urls) {
foreach($image_urls as $image_url) //deletes all urls found
{
unlink('uploads/property-images/'.$image_url);
}
return TRUE;
}
像这样更改您的控制器:
function delete_listing_id() {
if($this->session->userdata('is_logged_in')){
$id = $this->uri->segment(3);
$this->my_listings_model->delete_listing_id($id);
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
if(!empty($images_urls))
{
foreach($images_urls as $image_url);
{
$this->my_listings_model->delete_listing_images($image_url);
}
}
$this->my_listings();
}
并设置你的模型,因为它没有在其中使用 foreach
检查您的数组键并以这种方式传递它:
foreach($images_urls as $image_url){
unlink('uploads/property-images/'.$image_url['your_key']);
}
如果您在数组中没有任何特定键:您的数组就像这样:array('0'=>'a','1'=>'b' ).这样做:
foreach($images_urls as $image_url){
unlink('uploads/property-images/'.$image_url);
}
终于成功了。感谢大家的支持。
必须更换控制器:
$images_urls = $this->my_listings_model->get_property_all_images_url($id);
来自
$images_urls['images_urls'] = $this->my_listings_model->get_property_all_images_url($id);
并且在模型中所有 delete_listing_images(函数):
function delete_listing_images($images_urls) {
$rows = $images_urls;
if (count($rows) > 0) {
foreach($rows as $row) {
$number_of_images = count($row);
}
}
if(!empty($images_urls)) {
for($i=0; $i<$number_of_images;$i++){
foreach($images_urls as $image_url); {
unlink('uploads/property-images/'.$image_url[$i]);
}
}
}
return TRUE;
}