copy()函数/文件权限问题

时间:2013-10-03 09:19:56

标签: php

所以这是故事,我对PHP不是很有经验,最近搬到了一个新的主机,我的网站完全在旧主机上工作,但在新主机上有代码错误。

错误消息显示:

Warning: copy() [function.copy]: Unable to access http://i.imgur.com/USlH6p2.jpg in (directory)

这是代表错误的代码

function upload_image_remote($image, $name) {
   $upload_dir = APP_PATH . '/image.uploads';
   //check for directory rights
   if(!is_writable($upload_dir)) {
      echo do_error(_('Folder image.uploads is not writeable'));
      exit;
   }

   //check if there's a directory for today uploads
   $today = date("d-m-Y");

   if(!is_dir($upload_dir .'/' . $today)) {
        if(!mkdir($upload_dir .'/' . $today, 0777)) {
            echo do_error(_(sprintf('Folder <strong>image.uploads/%s</strong> could not be created. Please check permissions to be 0777.', $today)));
            exit;   
        }
   }

   $upload_path = $upload_dir .'/' . $today;

   (--> this is where) return copy($image, $upload_path .'/'. $name);

}

我认为这可能是一个权限问题,因为它完全适用于(旧主机)000webhost,任何人对代码的错误都有任何想法?

由于

2 个答案:

答案 0 :(得分:1)

我的猜测将是复制功能试图访问远程文件而不能由于PHP设置。

我认为出于安全原因,大多数托管公司都会allow_url_fopen = 0。这意味着您将无法从远程位置(http://www.site.com/foo.gif)读取。但是,您将能够从本地文件系统中读取。

来自PHP documentation

  

此选项启用支持URL的fopen包装器,以便访问类似文件的URL对象。提供了使用ftp或http协议访问远程文件的默认包装器,像zlib这样的扩展可能会注册其他包装器。

要检查此项,请通过在Web根目录中创建包含以下内容的文件来查看服务器上的当前PHP设置。您正在寻找 allow_url_fopen 设置。

<?php 
  echo phpinfo(); 
?> 

答案 1 :(得分:0)

  • 授予文件夹权限0755设置文件临时文件夹的正确路径 系统。