$username_ftp = "user";
$password_ftp = "password";
$file_name = "remote-transfer.txt";
$url = "example.biz/test/" . $file_name;
$hostname = "ftp://$username_ftp:$password_ftp@$url";
$content = file_get_contents('index.html');
$options = array('ftp' => array('overwrite' => true));
$stream = stream_context_create($options);
file_put_contents($hostname, $content, 0, $stream);
我尝试将远程服务器上的文件放到另一台远程服务器上 当我从我的localhost exixute这个代码工作文件,我从我的ocal pc传输文件到服务器。 但是,当我尝试从我的AWS服务器中删除此代码时,它不会传输任何文件,当我检查我的错误日志文件时,它给出了
PHP Warning: file_put_contents(): connect() failed: Permission denied
PHP Warning: file_put_contents(ftp://...@example.biz/remote-transfer.txt): failed to open stream: operation failed in
我的测试文件夹权限为 777 现在该做什么,是否有任何服务器配置是错过的。
答案 0 :(得分:0)
我认为您的问题$hostname
会尝试使用:(我在ec2实例及其工作中尝试了此解决方案。)
<?php
/* set the FTP hostname */
$user = "test";
$pass = "myFTP";
$host = "example.com";
//path of file
$file = "test.txt";
$hostname = $user . ":" . $pass . "@" . $host . "/" . $file;
/* the file content */
$content = "this is just a test.";
/* create a stream context telling PHP to overwrite the file */
$options = array('ftp' => array('overwrite' => true));
$stream = stream_context_create($options);
/* and finally, put the contents */
file_put_contents($hostname, $content, 0, $stream);
?>
答案 1 :(得分:0)
您需要从两端检查权限:
首先,您的AWS服务器存储桶(您当前的测试文件夹)应该对所有操作777公开(我认为您已经完成了),并且您使用的凭据必须具有访问所有文件的所有权限。
注意:之前我的AWS服务器存在问题,我必须通过右键单击文件夹手动设置文件夹公共。
要转移的服务器上的第二件事;对于所有用户,文件夹或路径应该是公共的(在传输所有文件后,您可以将其更改为只读),并且所有用户都有权在目标文件夹中写入文件。
由@chetanAmeta编写的代码块似乎是正确的。
这个答案可能对你有帮助。
答案 2 :(得分:0)
因为提供赏金,当然我能够自己解决这个问题(太糟糕了,我不能把我的赏金拿回来)。但无论如何,解决方案是使用apache服务器的用户(可能是“www-data”)挂载文件夹,然后服务器将能够写入共享,当然假设其余权限已设置正确的。
希望这可以帮助其他人,因为这对我来说非常令人沮丧。
答案 3 :(得分:0)
如果您完全确定该文件存在,那么您的服务器似乎有问题。在终端中执行以下代码可以解决您的问题:
setsebool -P httpd_can_network_connect on
设置布尔值。更多信息:http://linux.die.net/man/8/setsebool