2013-02-21 3 views
4

Я расстроен из-за удаления файла в ubuntu с помощью PHP unlink().unlink не может удалить файл

Я создал очень простое моделирование следующим образом:

  1. создать папку с именем «файлы» под/вар/WWW с 766 разрешения.
  2. загрузить файл, скажем «image.png» в этой папке & установить разрешение в 666
  3. создать файл PHP с именем delete.php, установите разрешение на 644 и загрузить в каталог/вар/WWW
  4. Вызовите файл в браузере (я использую локальный)

«image.png» до сих пор существует в «файлах» каталог

Вот PHP скрипт delete.php:

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

Я также попытался следующий сценарий:

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

Но до сих пор не может удалить файл.

+5

Пользователь, создавший image.png, является тем же пользователем, что и www-data (или кто когда-либо запускает apache?) –

ответ

2

Папка/владелец каталога может отличаться от пользователя, использующего для запуска php.

Необходимо создать папку с назначенным пользователем именем php. Если вы не можете этого сделать, попросите своего интернет-провайдера сделать это. Вот как я решил подобную проблему.

Один пользователь не может удалять файлы другого пользователя в системе unix. Если вы установите его на 777, вы можете удалить его ...

+1

Если вы можете использовать SSH для машины, то, возможно, вы можете запустить команду 'll', чтобы увидеть право собственности на файл, из которого вы удаляете, и файл, который вы удаляете. Обычно ваши php-скрипты принадлежат пользователю ftp и загружают файлы от пользователя root. Это помогло бы привести их как внутри одной группы. – Khuram

+0

Файл может быть удален при изменении владельца в www-data. Спасибо всем за помощь. – user1134475

5

Unlink выдает предупреждение о неисправности. Проверьте, видимо ли E_WARNING для вас, чтобы узнать, что происходит.

Обычно это сводится к правам пользователей. Имейте в виду, если ваш скрипт выполняется браузером, обычно пользователь с именем wwwrun или wwwdata (или что-то подобное) выполняет его на вашем сервере.

Проверьте, есть ли у этого пользователя разрешения для удаления, затем повторите попытку.

Смежные вопросы