我正在尝试阅读并将使用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天”的网站上看到了一个非常相似的问题,所以这不是发生在我身上的事情......
有什么想法吗?
答案 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__));