0

所以这就是故事,我对 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 上完美运行,有人对代码有什么问题有任何想法吗?

谢谢

4

2 回答 2

1

我的猜测是复制功能正在尝试访问远程文件并且由于 PHP 设置而无法访问。

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

PHP 文档

此选项启用支持访问 URL 对象(如文件)的 URL 感知 fopen 包装器。为使用 ftp 或 http 协议访问远程文件提供了默认包装器,zlib 等一些扩展可能会注册额外的包装器。

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

<?php 
  echo phpinfo(); 
?> 
于 2013-10-03T09:39:00.573 回答
0
  • 授予文件夹权限 0755 为文件系统设置正确的临时文件夹路径。
于 2013-10-03T09:33:46.220 回答