Zend Framework: не может получить доступ к файлу, который уже существует - PullRequest
0 голосов
/ 07 октября 2009

Я пытаюсь прочитать и отправить обратно в браузер файл, загруженный с помощью механизма Zend Framework.

Файл был загружен правильно в нужное место и, как я проверил,

su www-data 

и после ls и cat пользователь сети может прочитать его и правильно его изменить.

проблема в том, что внутри контроллера, когда я пытаюсь:

if(!file_exists($fileName)) {
die("File ($fileName) wasnt set or it didnt exist");
}

Я всегда умираю (...), хотя $ fileName - это строка, и когда я отображаю ее местоположение, я всегда могу (как указано выше) прочитать ее из командной строки.

Вывод ls:

$ ls -lah
total 112K
drwxr-xr-x 2 www-data www-data 4.0K 2009-10-07 18:21 .
drwxr-xr-x 3 www-data www-data 4.0K 2009-10-07 13:57 ..
-rw-r--r-- 1 www-data www-data  70K 2009-10-07 17:33 Eclipse_Icon_by_TZR_observer.png
-rw-r--r-- 1 www-data www-data  27K 2009-10-07 18:24 eclipse_logo2.png

Статический выход:

stat() [function.stat]: stat failed for .../eclipse_logo2.png

Я видел очень похожий вопрос с сайтом "попробуй на 30 дней", так что со мной это не случилось ...

Есть идеи?

1 Ответ

0 голосов
/ 08 октября 2009

Вы должны chmod вновь созданный файл, потому что владельцем файла, созданным на стороне PHP, будет Apache (группа: www-data, httpd, www или что-то подобное). Поэтому в следующий раз PHP не сможет получить доступ к файлу, потому что www-data владеет им и у него неправильные разрешения.

Here's how you create new files so that you can access them later.
<?php
$path = '/path/to/new/file';
touch($path)
chmod($path, 0777);
// TRY to change group, this usually fails
@chgrp($path, filegroup(__FILE__)); 
// TRY to change owner, this usually fails
@chown($path, fileowner(__FILE__));
...