unlink cannot delete file

有些话、适合烂在心里 提交于 2019-12-01 20:23:09

问题


I'm frustrated about deleting file in ubuntu using PHP unlink().

I created a very simple simulation as follow:

  1. create a folder named "files" beneath /var/www with 766 permission.
  2. upload a file, let say "image.png" in that folder & set the permission into 666
  3. create a php file named delete.php, set the permission to 644 and upload to /var/www directory
  4. Call the file in browser (I use localhost)

The "image.png" still exists in "files" directory

Here is the php script of delete.php :

$filename = 'image.png';
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename;
unlink($file);

I also tried the following script :

$filename = 'image.png';
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files';
chdir($dir);
unlink($filename);

But still can't delete the file.


回答1:


The folder/owner of the directory could be a different user than the user being used to run php.

You should create a folder with the user php assigned. If you cannot do that yourself ask your ISP to do it. That is how I solved a similar problem.

One user cannot delete files of another user on a unix system. If you would set it to 777 then you could delete it...




回答2:


Unlink throws a warning on failure. Check if E_WARNING is visible for you to find out whats going on.

It usually boils down to user rights. Keep in mind if your script is executed by a browser, usually a user named wwwrun or wwwdata (or something similar) is executing it on your server.

Check if this user has permissions to delete, then try again.



来源:https://stackoverflow.com/questions/14997043/unlink-cannot-delete-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!