cakePHP:看不到上传目录


cakePHP: Cannot see upload directory

我一直在努力几天,试图找出为什么我无法将文件(move_uploaded_file)从临时移动到我设置的目录(/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

为什么会这样...谁能帮我!

我怀疑你已经做了一个目录/img/uploads/photos/?它可能与您的其他文件位于同一目录内,例如/var/www/yoursite/img/uploads/photos/或类似的东西。

你可以使用一些技巧,如 $_SERVER{'DOCUMENT_ROOT'} ,如你所看到的 http://php.net/manual/en/function.file-exists.php

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

路径/img/...表示路径相对于磁盘根目录,即它表示硬盘最顶层的img目录。我怀疑这就是目录所在的地方。不要以/开头的路径,以使其相对于您正在处理的文件。文件路径不是网址!

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