PHP:看不到上传目录

时间:2012-06-24 14:42:45

标签: php cakephp

我一直在苦苦寻找几天试图找出如何将文件(move_uploaded_file)从temp移动到我设置的目录(/img/uploads/photos)。

经过大量测试和头部刮擦后,我决定写下CakePHP的CakeLog,无论上传功能发生了什么。

虽然我已经物理创建了/img/uploads/photos,但当我使用CakeLog::write('debug', 'Does directory exist?: '.json_encode(file_exists('/img/uploads/photos/')));时,它会记录false。或is_dir,也会返回false

为什么会发生这种情况......任何人都可以帮助我!

4 个答案:

答案 0 :(得分:2)

我怀疑你是否制作了目录/img/uploads/photos/?它可能与您的其他文件位于同一个目录中,例如/var/www/yoursite/img/uploads/photos/或类似的位置。

您可以使用$_SERVER{'DOCUMENT_ROOT'}之类的一些技巧,因为您可以在http://php.net/manual/en/function.file-exists.php看到

答案 1 :(得分:1)

当你说你创建了/img/uploads/photos/目录时,我不相信你。这是一个绝对的路径,从机器的根算起。您更有可能在某个位置的web目录中创建了该文件夹(例如/var/www/img/uploads/photos//home/caboone/public_html/img/uploads/photos/)。

答案 2 :(得分:0)

路径/img/...表示路径相对于磁盘根目录,即它表示硬盘最顶层的img目录。我怀疑这是目录的位置。不要使用/启动路径以使其相对于您正在使用的文件。文件路径不是URL!

答案 3 :(得分:0)

  1. 将文件从一个目录移动到另一个目录时使用绝对路径。 使用dirname(__FILE__)获取绝对当前工作目录,然后添加 其余的路径。
  2. 根据@Alex的建议,为目录设置适当的权限。使用chmod()和 设置权限777(ugo + w)[用户+组+其他世界可写]。