将文档保存在另一台服务器上

时间:2015-04-21 14:30:42

标签: php server tcpdf

所以我使用TCPDF生成pdf文件并尝试使用

将生成的文档保存在驻留在另一台服务器上的文件夹中
$pdf->Output('\\\210.24.39.6\salesorder\salesorder.pdf', 'F');

我收到了错误

  

警告:fopen():不支持远程主机文件访问,

我可以从服务器计算机远程访问路径和文件夹。有谁知道为什么?

3 个答案:

答案 0 :(得分:1)

您可以将共享作为驱动器安装在Windows上或安装在Linux服务器上的文件夹中,而不是像本地文件系统一样使用它。

对于Windows:

net use \\210.24.39.6\salesorder\

对于linux(不要忘记创建文件夹销售订单):

mount –t cifs 210.24.39.6:/salesorder /fullpath/salesorder –o username=test,workgroup=test

答案 1 :(得分:0)

  1. 一种可能的解决方案是scp,代表安全副本

    它的语法如下:

    scp /local/dir/file.pdf root@destination.net:target/dir/file.pdf
    

    它通过SSH复制文件,要求在目的地服务器上授权SSH密钥以省略密码请求。

  2. 另一种解决方案是使用 FTP 协议复制文件。

  3. 或设置allow_url_fopen = 1,但要了解执行该操作的风险herehere。简而言之:不安全
  4. 选项1和2要求在源位置生成/保存文件并将其复制到另一个/目标位置。

答案 2 :(得分:0)

除了scp(这是一个不错的选择)之外,另一个选项是在本地生成PDF,然后将其复制到IP或UNC名称。我使用的实现如下:

1)生成pdf到本地驱动器。 (无论您身在何处)

$pdf->Output($filename, 'F');

2)使用内置的php函数将文件复制到远程驱动器。我建立了一个函数来执行此操作,因为我还想进行一些检查,以确保它可以继续进行而不会出错。

function CheckDirectoryExists($path) {
    if (!file_exists($path)) {          
        mkdir($path, 0777, true); 
    }
    return file_exists($path);
}

function CopyFile($file, $to_file) {
    if (!file_exists($file)) {
        return -1;
    }
    if (!file_exists($to_file)) {
        $path = '';
        $explodedPath = explode(dirSep, $to_file);
        for ($i = 0; $i < (sizeof($explodedPath) - 1); $i++) {
            $path .= $explodedPath[$i] . dirSep;
        }
        CheckDirectoryExists($path);
    } else {
        unlink($to_file);
    }
    return copy($file, $to_file);
}

这应该起作用,我在设置的init.php中使用了UNC名称而不是IP地址。