Warning: file_get_contents failed to open stream: No such file or directory?

26,364

Solution 1

Try string like this it may help

Just use . for concatenating.

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

to

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

and

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

to

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

Solution 2

in php you can't use variable in single quotes use double quotes or use variables outside the string

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

change it to

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

Solution 3

change

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

to

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

$variables are not parsed inside ' quotes

Another way just

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

Same with remote.

Share:
26,364
SaiKiran
Author by

SaiKiran

Programmer

Updated on July 12, 2022

Comments

  • SaiKiran
    SaiKiran almost 2 years

    Here in this Iam uploading a file and then trying to send this file to another VM.

    Code here

    // 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/>";
    

    Output:

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

    And it is printing the details correctly.But when i try to send this file to remote VM,it is creating errors.

    Code continuation

    $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);
    

    Error Log:

     /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 
    

    Any suggestions on how to fix this error.

    P.S :

    I have used these for debugging at the start of php file

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