php ftp проверить, существует ли папка всегда возвращать папку создания ошибок

может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно в этом коде?

if($id != '') { if(is_dir("../public_html".$tem_pasta['path']."/pics/".$id)) { echo "pasta já existia"; $destination_file = "../public_html".$tem_pasta['path']."/pics/".$id."/".$myFileName; } else { //pasta nao existia if (ftp_mkdir($conn_id, "../public_html".$tem_pasta['path']."/pics/".$id)) { $destination_file = "../public_html".$tem_pasta['path']."/pics/".$id."/".$myFileName; //echo "pasta criada<br>"; } else { echo "erro, não criou a pasta<br>"; } } } else { $destination_file = "../public_html".$tem_pasta['path']."/pics/".$myFileName; } 

он проверяет, есть ли у меня папка ($ id) в моем каталоге pics, и если скрипт не создает новый. работает хорошо, но если я попытаюсь загрузить другой файл в предыдущую созданную папку, он вернет ошибку, заявив, что не создал папку …

благодаря

is_dir работает только в локальной файловой системе. Если вы хотите проверить, существует ли уже ftp-каталог, попробуйте это:

 function ftp_is_dir($ftp, $dir) { $pushd = ftp_pwd($ftp); if ($pushd !== false && @ftp_chdir($ftp, $dir)) { ftp_chdir($ftp, $pushd); return true; } return false; } if($id != '') { if(ftp_is_dir($conn_id, "../public_html".$tem_pasta['path']."/pics/".$id)) { // and so on... 

Я не думаю, что вы можете использовать is_dir на FTP-ресурсе, что вам нужно сделать, это проверить, равен ли размер файла / файла -1 с ftp_size.

Потому что я думаю, что теперь происходит: вы пытаетесь сделать ту же папку снова, и именно поэтому возникает ошибка.

Изменить: или проверить с ftp_chdir !

 <?php function ftp_directory_exists($ftp, $dir) { // Get the current working directory $origin = ftp_pwd($ftp); // Attempt to change directory, suppress errors if (@ftp_chdir($ftp, $dir)) { // If the directory exists, set back to origin ftp_chdir($ftp, $origin); return true; } // Directory does not exist return false; } ?> 

Должно сработать!

Использовать ftp_nlist и ftp_nlist

 $ftp_files = @ftp_nlist($this->connection, $directory); if ($ftp_files === false) { throw new Exception('Unable to list files. Check directory exists: ' . $directory); } if (!in_array($directory, $ftp_files)) { $ftp_mkdir = @ftp_mkdir($this->connection, $directory); if ($ftp_mkdir === false) { throw new Exception('Unable to create directory: ' . $directory); } }