所以这是故事,我对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,任何人对代码的错误都有任何想法?
由于
答案 0 :(得分:1)
我的猜测将是复制功能试图访问远程文件而不能由于PHP设置。
我认为出于安全原因,大多数托管公司都会allow_url_fopen = 0
。这意味着您将无法从远程位置(http://www.site.com/foo.gif
)读取。但是,您将能够从本地文件系统中读取。
此选项启用支持URL的fopen包装器,以便访问类似文件的URL对象。提供了使用ftp或http协议访问远程文件的默认包装器,像zlib这样的扩展可能会注册其他包装器。
要检查此项,请通过在Web根目录中创建包含以下内容的文件来查看服务器上的当前PHP设置。您正在寻找 allow_url_fopen 设置。
<?php
echo phpinfo();
?>
答案 1 :(得分:0)