У меня есть файл входного типа, который скрыт и запускается с помощью другой кнопки ... входные данные должны загружать изображения только в папку с именем Covers, но код не работает и не загружает никаких изображений ...
HTML-код
<div class = "cover">
<img src = "Layout/images/cover.jpg" alt = "cover" name = "cover-img" class = "cover-img">
<form action = "<?php echo $_SERVER['PHP_SELF']?>" method = "POST" enctype = "multipart/form-data">
<button type = "submit" name = "submit-cover" id = "cover-btn">Change Cover</button>
<input type = "file" name = "avatar" id = "cover-img-input" class = "hidden" />
</form>
php коды:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['submit-cover'])) {
$avatarName = $_FILES['avatar']['name'];
$avatarTempName = $_FILES['avatar']['tmp_name'];
// List of allowed image extensions
$avatarAllowedExtensions = array("jpeg","jpg","png","gif");
// Get avatar extension
$avatarExtension = strtolower(end(explode('.',$avatarName)));
// Check if uploaded image extension is in allowed image extensions
$formErrors=array();
if (! empty($avatarName) && ! in_array($avatarExtension, $avatarAllowedExtensions)) {
$formErrors[]='This extension is <strong>not allowed</strong>';
}
if (empty($avatarName)) {
$formErrors[]='No image <strong>uploaded</strong>';
}
if (empty($formErrors)) {
// Create random number between zero to million to concatinate it with image name
$avatar = rand(0,1000000) . '_' . $avatarName;
// Move image into Covers folder
move_uploaded_file($avatarTempName, "Uploads\Covers\\" . $avatar);
}
}
}
я получил
Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in D:\XAMPP\htdocs\Warina\connect.php on line 7
После этого я поискал решение и получил следующее: extension=php_pdo_mysql.dll должен быть раскомментирован в моем php.ini, и теперь он раскомментирован. Я тоже не понимаю, что это за ошибка.
Вы уже добавляли код отображения ошибки, предложенный в комментарии @MagnusEriksson?
@RiggsFolly да, я сделал то, что сказал Магнус Эрикссон, и у меня возникла фатальная ошибка: Неустранимая ошибка: неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND' в D: \ XAMPP \ htdocs \ Warina \ connect.php в строке 7 после этого я искал решение и получил это : extension = php_pdo_mysql.dll должен быть раскомментирован в моем php.ini, и теперь он раскомментирован. Я тоже запутался в этой ошибке .. вы можете дать мне решение
Так что вам лучше показать нам connect.php и любой код, который пытается получить доступ к базе данных в этом скрипте.
Также запустите небольшой скрипт с этим в скрипте. phpinfo(), найдите параметр Loaded Configuration File и убедитесь, что это именно тот файл php.ini, который вы просматривали.






Эта строка отправляет уведомление:
$avatarExtension = strtolower(end(explode('.',$avatarName)));
Notice: Only variables should be passed by reference in file.php on line xx
Заменить
$avatarExtension = explode('.',$avatarName);
$avatarExtension = strtolower(end($avatarExtension));
Исправьте этот путь:
move_uploaded_file($avatarTempName, "Uploads\Covers\\" . $avatar);
С
move_uploaded_file($avatarTempName, "Uploads\\Covers\\" . $avatar);
И убедитесь, что он существует
Путь существует, я уверен в этом, и я заменил свои строки на ваши, но проблема все еще существует, и изображение не загружено
Вы используете * nix, где имена каталогов чувствительны к регистру, если это так, фактические имена каталогов содержат заглавную букву в начале
Также проще использовать /, а не escape-символ `\`, независимо от ОС. PHP решит, что на самом деле использовать для внутренних целей в любой ОС.
Вы проверили свой журнал ошибок, есть ли какие-либо подсказки о том, что происходит? Хорошей идеей также является включение
display_errorsв вашей локальной среде PHP. Подробнее здесь: Как мне отобразить ошибки PHP?