无法使用 PHP 在远程服务器中递归创建文件夹
Unable to create folder recursively in remote server using PHP
我正在尝试使用 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 条件总是失败。是否有另一种方法来检查远程服务器中是否存在目录?
谢谢
文档明确指出您必须添加显式 "recursive flag",因为默认行为是 非递归 行为。
这意味着你应该使用类似的东西:
ssh2_sftp_mkdir($sftp, $path, 0700, true);
我正在尝试使用 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 条件总是失败。是否有另一种方法来检查远程服务器中是否存在目录?
谢谢
文档明确指出您必须添加显式 "recursive flag",因为默认行为是 非递归 行为。
这意味着你应该使用类似的东西:
ssh2_sftp_mkdir($sftp, $path, 0700, true);