file_put_contents - 远程文件创建

时间:2011-01-11 07:58:26

标签: php

我可以在另一台主机上创建/写入文件吗? domain with file_put_contents()OR fwrite()?

如果可以,应该在该主机上设置哪些权限和其他属性?

谢谢..

3 个答案:

答案 0 :(得分:6)

http://www.php.net/manual/en/function.file-put-contents.php#101408

查看

将文件从localhost上传到任何FTP服务器。 pease note'ftp_chdir'已被用于代替直接远程文件路径....在ftp_put ... remoth文件应该只是文件名

<?php 
$host = '*****'; 
$usr = '*****'; 
$pwd = '**********';         
$local_file = './orderXML/order200.xml'; 
$ftp_path = 'order200.xml'; 
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");      
ftp_pasv($conn_id, true); 
ftp_login($conn_id, $usr, $pwd) or die("Cannot login"); 
// perform file upload 
ftp_chdir($conn_id, '/public_html/abc/'); 
$upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII); 
if($upload) { $ftpsucc=1; } else { $ftpsucc=0; } 
// check upload status: 
print (!$upload) ? 'Cannot upload' : 'Upload complete'; 
print "\n"; 
// close the FTP stream 
ftp_close($conn_id); 
?>

答案 1 :(得分:1)

我编写了一个类似于PHP file_put_contents()的函数,它正在写入FTP服务器:

function ftp_file_put_contents($remote_file, $file_string)
{
    // FTP login
    $ftp_server="my-ftp-server.com"; 
    $ftp_user_name="my-ftp-username"; 
    $ftp_user_pass="my-ftp-password";

    // Create temporary file
    $local_file=fopen('php://temp', 'r+');
    fwrite($local_file, $file_string);
    rewind($local_file);       

    // Create FTP connection
    $ftp_conn=ftp_connect($ftp_server); 

    // FTP login
    @$login_result=ftp_login($ftp_conn, $ftp_user_name, $ftp_user_pass); 

    // FTP upload
    if($login_result) $upload_result=ftp_fput($ftp_conn, $remote_file, $local_file, FTP_ASCII);

    // Error handling
    if(!$login_result or !$upload_result)
    {
        echo('FTP error: The file could not be written on the remote server.');
    }

    // Close FTP connection
    ftp_close($ftp_conn);

    // Close file handle
    fclose($local_file);
}

// Usage
ftp_file_put_contents('my-file.txt', 'This string will be written to the remote file.');

答案 2 :(得分:0)

如果您想特别使用file_put_contents,则必须使用stream context作为远程服务器接受上传的协议。例如,如果服务器配置为允许PUT请求,则可以创建HTTP上下文并将适当的方法和内容发送到服务器。另一个选择是设置FTP上下文。

comments for file_put_contents中有一个关于如何将它与FTP的流上下文一起使用的示例。请注意,使用的ftp://user:pass@host URI方案正在以明文形式传输用户凭据。

Additional examples