2009-10-07 81 views
0

我正在尝试阅读并向浏览器回发一个使用zend框架机制上传的文件。zend框架:无法访问已存在的文件

文件已正确上传到所需的位置和我已经

su www-data 

和LS和一只猫检查后,网络用户可以阅读并正确修改。

的问题是,一个控制器内,当我尝试:

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

我总是让死(......),虽然$文件名是一个字符串,当我展示它的位置,我可以总是(如前所述)从命令行读取它。

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天”的网站,所以这不是一件发生在我身上...

任何想法?

+0

1.您可以发布ls -l file.ext输出或stat($ fileName)吗? 2.您能否将类似问题发布到“尝试30天” – eveliotc 2009-10-07 17:52:50

+0

明确:加入问题主体 – 2009-10-07 18:06:24

+0

对于第二个问题:不是,它是“注册第一个论坛”,我真的不想在那里注册... – 2009-10-07 18:08:25

回答

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__)); 
+0

感谢这很明显,这是一个权限问题,我会尝试并尽快通知... – 2009-10-08 13:59:50

+0

被认为是正确的,因为还有一个权限问题。 那之后真正的问题是什么: 我忘了修剪postgresql的结果,输入的不仅是文件名,还有大量的尾部空格。真正的修复因此是一个修剪(...)调用。 – 2009-10-11 14:13:57