我可以使用file_put_contents()或fwrite()在另一台主机&域上创建/写入文件吗?file_put_contents - 远程文件创建
如果可以,该主机上应设置什么权限和其他属性?
谢谢..
我可以使用file_put_contents()或fwrite()在另一台主机&域上创建/写入文件吗?file_put_contents - 远程文件创建
如果可以,该主机上应设置什么权限和其他属性?
谢谢..
检查了这一点,从http://www.php.net/manual/en/function.file-put-contents.php#101408
从本地主机上传文件到任何FTP服务器。 皮斯记“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);
?>
如果你想使用file_put_contents
具体而言,你必须使用stream context作为远程服务器接受上传的协议。例如,如果服务器配置为允许PUT请求,则可以创建HTTP上下文并将适当的方法和内容发送到服务器。另一种选择是设置FTP上下文。
在comments for file_put_contents
中有一个关于如何将它与FTP的流上下文一起使用的示例。请注意,使用的ftp://user:[email protected] URI方案以明文形式传输用户凭证。
我写了类似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.');