2013-09-26 350 views
6

Tôi đang cố gắng xóa ảnh trong php bằng cách hủy liên kết. Tôi đã sử dụng nó trước đó trên máy chủ khác nhưng lần này nó không hoạt động. Tôi đã sử dụng đường dẫn tuyệt đối cho thử nghiệm nhưng vẫn không hoạt động:Hủy liên kết PHP Không hoạt động

Tôi đã sử dụng nó làm: bỏ liên kết ('img1.jpg');

và:

unlink('http://www.mysite.com/img1.jpg'); 

Hãy ai có kinh nghiệm như vậy?

+3

Bạn không thể xóa bằng url. Bạn đã thử một đường dẫn hệ thống tập tin đầy đủ, như '/ var/www/mysite.com/img1.jpg'? – Maerlyn

+0

Có lỗi không? Có thể bạn không có quyền xóa tệp này hoặc tệp ở đâu đó khác trên máy chủ. 'unlink' với địa chỉ http: // ... sẽ không hoạt động, bạn phải sử dụng đường dẫn máy chủ. – Jojo

+0

Tôi đã sử dụng nó như: unlink ('img1.jpg'); nhưng không hoạt động – Sunil

Trả lời

6

url không cho phép chức năng ulink

bạn có thể xin vui lòng sử dụng này

Đó là tốt hơn, cũng nơi an toàn khôn ngoan để sử dụng một đường dẫn tuyệt đối. Nhưng bạn có thể nhận được đường dẫn động này.

Ví dụ: sử dụng:

getcwd(); 

Tùy thuộc vào nơi kịch bản PHP của bạn, biến bạn có thể trông như thế này:

$deleteImage = getcwd() . 'img1.jpg'; 

unlink($deleteImage); 

việc kiểm tra này

bool unlink (string $filename [, resource $context ]) 

tên tệp
Đường dẫn đến tệp.

Vì vậy, chỉ lấy một chuỗi làm tên tệp.

Đảm bảo rằng tệp có thể truy cập được bằng đường dẫn từ vị trí bạn thực thi tập lệnh. Đây không phải là một vấn đề với đường dẫn tuyệt đối, nhưng bạn có thể có một đường dẫn tương đối.

+1

Vâng làm việc với getcwd() nhưng tôi không biết tại sao không với đường dẫn tuyệt đối. Anyways Cảm ơn Patel. Reg, Sunil – Sunil

2

Mặc dù unlink() hỗ trợ URL (see here) bây giờ, http: // không được hỗ trợ: http wrapper information

sử dụng đường dẫn hệ thống tập tin để xóa các tập tin.

0

bỏ liên kết sẽ không làm việc với unlink('http://www.mysite.com/img1.jpg');

sử dụng thay vì unlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg'); // mất thư mục hiện hành hay,

unlink($_SERVER['DOCUMENT_ROOT'].'dir_name/img1.jpg'); 

Có thể có sự cho phép của tập tin issue.please kiểm tra cho việc này.

0

Cung cấp đường dẫn tương đối từ thư mục chứa hình ảnh được lưu vào tệp nơi bạn đang viết tập lệnh. Nếu cấu trúc tệp giống như:

-your php file 
-images 
    -1.jpg 

then 

unlink(images/1.jpg); 

Hoặc có thể có một số vấn đề về quyền thư mục. Các tệp của bạn nằm trên máy chủ hoặc bạn đang chạy trên máy chủ cục bộ? Nếu nó trên một máy chủ thì cho phép 755 vào thư mục hình ảnh.

1

con đường sử dụng hệ thống tập tin,
đầu tiên xác định con đường như thế này:

define("WEB_ROOT",substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-3)); 

và kiểm tra tập tin là tồn tại hay không, nếu tồn tại sau đó bỏ liên kết các tập tin.

$filename=WEB_ROOT."img1.jpg"; 
if(file_exists($filename)) 
{ 
$img=unlink(WEB_ROOT."img1.jpg"); 
} 
2

Nếu bạn sử dụng bỏ liên kết trong một linux hoặc unix bạn cũng nên kiểm tra kết quả của is_writable (string $filename) Và nếu hàm trả về false, bạn nên kiểm tra các điều khoản tập tin với fileperms (string $filename).

Quyền đối với tệp là các sự cố thông thường trên không gian web, ví dụ: nếu bạn tải lên tệp trên mỗi ftp với người dùng ftp và máy chủ web đang chạy với tư cách người dùng khác.

Nếu đây là vấn đề, bạn có làm gì để một o

chmod + img1.jpg RWD

hoặc

chmod 777 img1.jpg

để viết lớn (và xóa) quyền cho Người dùng khác.