无法使用PHP在远程服务器中递归创建文件夹

时间:2016-11-02 08:37:47

标签: php permissions sftp

我正在尝试使用PHP在远程SFTP服务器中创建目录。 但后来总是无法创造。

以下是我的尝试。

$connection = ssh2_connect($server, 22);
$path = "images/vehicle/car/sports/";
if(ssh2_auth_password($connection, $username, $password)){
    echo "connected\n";
    $sftp = ssh2_sftp($connection);
    if (file_exists('ssh2.sftp://' . $sftp . '/' . $path)) {
        echo "present\n";
    } else {
        ssh2_sftp_mkdir($sftp, $path);
        $contents = file_get_contents('car.jpeg');
        file_put_contents("ssh2.sftp://$sftp/$path/car.jpeg", $contents);
    }
} else {
    echo "connection failed\n";
}

问题1.无法创建目录。这个脚本有什么问题吗?

问题2.能够像这样逐个创建每个文件夹,

ssh2_sftp_mkdir($sftp, '/images');
ssh2_sftp_mkdir($sftp, '/images/vehicle');
ssh2_sftp_mkdir($sftp, '/images/vehicle/car');

这是与权限相关的问题吗?

问题3. file_exists条件总是失败。是否有另一种方法可以检查远程服务器中是否存在目录?

由于

1 个答案:

答案 0 :(得分:3)

文档明确指出您必须添加一个明确的"递归标记",因为默认为非递归行为。

这意味着你应该使用类似的东西:

ssh2_sftp_mkdir($sftp, $path, 0700, true);

请参阅:http://php.net/manual/en/function.ssh2-sftp-mkdir.php