zend框架:无法访问已存在的文件

时间:2009-10-07 17:37:21

标签: php zend-framework file-io

我正在尝试阅读并将使用zend框架机制上传的文件发回浏览器。

文件已正确上传到所需位置,并且我已通过

检查
su www-data 

在ls和cat之后,网络用户可以阅读并正确修改它。

问题是当我尝试在控制器内部时:

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

我总是死(...),虽然$ fileName是一个字符串,当我显示它的位置时,我总是(如前所述)从命令行读取它。

输出:

$ 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 :(得分:0)

你必须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__));