无法打开流,权限被拒绝-PHP


failed to open stream and permission denied - PHP

我正试图从https://i.stack.imgur.com/KkoAp.jpg到localhost。它给了我一个

警告:copy(https://i.stack.imgur.com/KkoAp.jpg)[function.copy]:无法打开流:/var/www/html/test/timg 中的权限被拒绝

文件夹timg已获得777访问

copy("https://i.stack.imgur.com/KkoAp.jpg","timg/avcsLXI.jpg");

move_uploaded_file()抛出相同错误

我见过各种各样的例子,但没有看到一个有副本。我不想为此使用fopen或curl。

您需要指定目标文件名,而不仅仅是目录。

这对我有效:

copy("http://i.imgur.com/avcsLXI.jpg","timg/avcsLXI.jpg");

请注意,出于安全原因,一些网络主机不允许URL作为源路径,这只有在启用了"fopen wrappers"的情况下才有效。

如果timg是一个文件夹,则存在问题。copy()处理源和目标的FILES。你不能只有一个文件夹作为目标,因为副本会尝试用你要复制的文件替换文件夹。所以

copy("http://i.imgur.com/avcsLXI.jpg","timg"); // folder only, WRONG
copy("http://i.imgur.com/avcsLXI.jpg","timg/thepic.jpg"); // correct, folder+file

如果您正在寻找fopen或curl之外的替代方案,可以使用wget:

shell_exec('wget -P timg/avcsLXI.jpg http://i.imgur.com/avcsLXI.jpg');