Intereting Posts
Laravel 5: проверьте, принадлежит ли пользователю список модераторов, прежде чем разрешить ему редактировать abraham / twitteroauth отвечает на perticular твит в PHP Удалить родительский каталог и все дочерние файлы, а затем перенаправить Как я могу прикрепить изображение с помощью Phpmailer? mysqli_store_result () vs. mysqli_use_result () PHP: $ i = $ i ++ разбил сервер Радиус / ближайшие результаты – API Карт Google Foreach loop (или, может быть, может быть?) – хотите вернуть только одну запись в зависимости от страницы выполнить строку кода PHP в командной строке jQuery $ .ajax сообщение в файл PHP не работает Использование функции end () с функцией explode () не работает PHP / mySQL – использование результата из «CONCAT» и «AS» в разделе «LIKE» Сценарий Python отправляет изображение на PHP Laravel 5.1: сохранить загруженный файл в качестве старого ввода Комплексные запросы к базе данных в yii2 с активной записью

ошибка при загрузке изображения нет такого пути или каталога

Добрый день, я слежу за учебником и очень усердно работал над тем, чтобы этот скрипт работал, мне удалось исправить много вещей, однако одна постоянная проблема, которую я получаю, такова:

No such file or directory in /home/xxxxxxx/public_html/regForm.php on line 93

То, что я пытаюсь понять, – это заставить пользователя загружать профиль pic на мой живой сервер / сайт при регистрации, вот часть моей формы и код ниже:

Я был бы очень признателен, если бы более опытный пользователь мог дать ему сканирование и посоветовать, где я ошибаюсь, чем раньше

HTML-форма

  <form ENCTYPE="multipart/form-data" name="registration-form" id="regForm" method="post" action="regForm.php"> : : Upload Picture: <INPUT NAME="file_up" TYPE="file"> <input type="submit" value="Register" name="register" class="buttono" /> </form> 

UPLOAD SCRIPT

 $file_upload="true"; $file_up_size=$_FILES['file_up']['size']; echo $_FILES['file_up']['name']; if ($_FILES['file_up']['size']>250000){ $msg=$msg."Your uploaded file size is more than 250KB so please reduce the file size and then upload.<BR>"; $file_upload="false"; } if (!($_FILES['file_up']['type'] =="image/jpeg" OR $_FILES['file_up']['type'] =="image/gif")) { $msg=$msg."Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>"; $file_upload="false"; } $file_name=$_FILES['file_up']['name']; if($file_upload=="true"){ $ftp_server = "xxxxxx"; $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); $ftp_username='xxxxxx'; $ftp_userpass='xxxxxx'; $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); $file = $file_name; // upload file if (ftp_put($ftp_conn, "public_html/img/userPics", $file, FTP_ASCII)) //here is the problem with the path I suspect { echo "Successfully uploaded $file."; } else { echo "Error uploading $file."; } // close connection ftp_close($ftp_conn); } 

При работе с изображениями вам необходимо использовать двоичный формат.

FTP_BINARY вместо FTP_ASCII.

Согласно руководству:

Убедитесь, что путь правильный. Это может отличаться от разных серверов.

Здесь вам также нужен трейлинг-косая черта:

 public_html/img/userPics/ ^ 

В противном случае ваша система будет интерпретировать это как:

userPicsIMAGE.JPG а не предполагаемый userPics/IMAGE.JPG

Тем не менее, вам может понадобиться поиграть с самой дорогой. FTP немного сложнее.

То есть:

  • /home/xxxxxxx/public_html/userPics/
  • img/userPics/
  • ../img/userPics/

В зависимости от области выполнения файла.

 Корень> ftp_file.php  
 -img  
    -userPics

Папка также должна иметь соответствующие разрешения для записи.

  • Обычно 755.

    Используйте отчет об ошибках, если ваша система еще не настроена для обнаружения и отображения ошибок / уведомлений:

Пример из руководства FTP:

 <?php ftp_chdir($conn, '/www/site/'); ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY ); ?> 

Другое дело, однако, использование «истинного» и «ложного». Вы, скорее всего, хотите проверить истинность

 $file_upload=true; 

а не строковый литерал $file_upload="true";

то же самое для

 if($file_upload=="true") 

в

 if($file_upload==true) 

и для $file_upload="false"; проверить фальшивость

to $file_upload=false;

Прочтите руководство по этому вопросу:

Это самый простой тип. Булевы выражают значение истины. Это может быть TRUE или FALSE.


Проверьте свое FTP-соединение, извлеченное из https://stackoverflow.com/a/3729769/

 try { $con = ftp_connect($server); if (false === $con) { throw new Exception('Unable to connect'); } $loggedIn = ftp_login($con, $username, $password); if (true === $loggedIn) { echo 'Success!'; } else { throw new Exception('Unable to log in'); } print_r(ftp_nlist($con, ".")); ftp_close($con); } catch (Exception $e) { echo "Failure: " . $e->getMessage(); } 

Соглашения об именах:

Мне также нужно отметить, что в LINUX userPics не совпадает с userpics , если ваше имя папки будет содержать строчные буквы.

В отличие от Windows, которая нечувствительна к регистру.