警告:file_get_contents无法打开流:没有这样的文件或目录?

时间:2017-02-03 12:47:28

标签: php ssh upload scp

此处Iam上传文件,然后尝试将此文件发送到另一个VM。

此处代码

// Debugging information -- No use in output    
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
$file_name = $_FILES['userfile']['name'];
echo $file_name;
echo gettype($file_name);
echo "<br/>";

输出:

Here is some more debugging info:Array
(
    [userfile] => Array
        (
            [name] => 6274e8cb0358ef3e3906a91036bc84138a8fde606a6e926b9a580c79f9cfc489
            [type] => application/octet-stream
            [tmp_name] => /tmp/php3Yt3T5
            [error] => 0
            [size] => 3107800
        )

)
6274e8cb0358ef3e3906a91036bc84138a8fde606a6e926b9a580c79f9cfc489string

它正在正确打印详细信息。但是当我尝试将此文件发送到远程VM时,它正在创建错误。

代码延续

$localFile='/var/www/uploads/$file_name';
echo $localFile;
$remoteFile='/home/nsadmin/$file_name';
$host='192.168.150.85';
$port=22;
$user='someusername';
$pass='somepassword';

$connection= ssh2_connect($host,$port);
ssh2_auth_password($connection, $user, $pass);
$sftp = ssh2_sftp($connection);

$stream = fopen("ssh2.sftp://$sftp$remoteFile", 'w');
$file = file_get_contents($localFile);
fwrite($stream, $file);
fclose($stream);

错误日志:

 /var/www/uploads/$file_name Warning: file_get_contents(/var/www/uploads/$file_name): failed to open stream: No such file or directory in /var/www/MTP/upload.php on line 111 

有关如何解决此错误的任何建议。

P.S:

我在php文件的开头用它们进行调试

error_reporting(E_ALL);
ini_set('display_errors',1);
ini_set('log_errors',1);

3 个答案:

答案 0 :(得分:4)

在php中你不能在单引号中使用变量使用双引号或使用字符串之外的变量

$localFile='/var/www/uploads/$file_name';

将其更改为

$localFile='/var/www/uploads/'.$file_name; or $localFile="/var/www/uploads/$file_name";

答案 1 :(得分:2)

尝试这样的字符串可能有帮助

只需使用。用于连接。

$localFile='/var/www/uploads/$file_name';

$localFile='/var/www/uploads/'.$file_name;

$remoteFile='/home/nsadmin/$file_name';

 $remoteFile='/home/nsadmin/'.$file_name;

答案 2 :(得分:2)

更改

   $localFile='/var/www/uploads/$file_name';

   $localFile="/var/www/uploads/$file_name";

$变量未在'引号

中解析

另一种方式

   $localFile="/var/www/uploads/".$file_name;

与遥控器相同。