使用php copy命令从远程服务器复制文件

时间:2011-12-14 06:48:47

标签: php mamp

我正尝试copy()使用copy()命令从远程服务器发送文件,如下所示:

<?php

    error_reporting(E_ALL);

    $url = $_GET['url'];

    if (copy( $url, '/tmp/copy_from_url.jpeg'))
    {
        echo 'copied';
    }
?>

似乎工作时显示copied但是没有找到文件。

关于如何在此处追踪问题的任何想法?

我正在MAMP Lion上运行最新版本。相关文件为.jpegallow_url_fopen已开启。

编辑:文件夹Applications/MAMP/tmp实际上是/private/tmp的符号链接,其中文件被复制但不可见。

有没有办法更改PHP tmp文件夹?

3 个答案:

答案 0 :(得分:0)

您的代码应该没问题,但我认为最好使用file_get_contents()file_put_contents()更可靠的原因,例如

<?php
$source = $url;
$destination = '/tmp/copy_from_url.jpeg';

$data = file_get_contents($source);

$handle = fopen($destination, "w");
fwrite($handle, $data);
fclose($handle);
?>

看看是否有效?

答案 1 :(得分:0)

如果这些是您的权限ls -l /tmp

lrwxr-xr-x@ 1 root wheel 11 Jul 20 23:44 /tmp -> private/tmp – ian 9 hours 

看起来普通流程没有写权限。最后一个r-x表示te other users(不是rootwheel组)缺少w写权限。通常Apache在一个单独的帐户下运行,这就是为什么PHP也无法访问它。

答案 2 :(得分:0)

您应该将MAMP设置中的apache和mysql服务器的用户从“www / mysql”更改为“user / user”,其中“user”是您的用户 - http://screencast.com/t/wzyPmFTmj6LC