我正在尝试使用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条件总是失败。是否有另一种方法可以检查远程服务器中是否存在目录?
由于
答案 0 :(得分:3)
文档明确指出您必须添加一个明确的"递归标记",因为默认为非递归行为。
这意味着你应该使用类似的东西:
ssh2_sftp_mkdir($sftp, $path, 0700, true);