Извините, я не смог описать свой вопрос в качестве названия, я изо всех сил стараюсь правильно сформулировать проблему. У меня есть скрипт add-new-post.php
, который добавляет новый пост в блог. Я борюсь с процессом загрузки файла, так как файл загрузки находится на расстоянии нескольких уровней от сценария, который выполняет загрузку.
Расположение файлов:
public_html/content/uploads/imgs
public_html/content/themes/admin-cm/post/add-new-post.php
Итак, скрипт пытается загрузить файлы в первый каталог. Ниже приведен соответствующий фрагмент о загрузке файла, в данный момент я просто заставляю его отображать некоторую информацию на странице, чтобы я мог видеть, что происходит:
if ( !empty( $_FILES[ "featured_image" ][ "name" ] ) ) {
$target_dir = '/content/uploads/imgs/';
$target_file = dirname(__FILES__, 4 ) . $target_dir . basename( $_FILES[ "featured_image" ][ "name" ] );
$upload_ok = 1;
$image_file_type = strtolower( pathinfo( $target_file, PATHINFO_EXTENSION ) );
$check = getimagesize( $_FILES[ "featured_image" ][ "tmp_name" ] );
if ( $check !== false ) {
echo "File is an image - " . $check[ "mime" ] . ".";
echo "<br>" . $target_file;
$upload_ok = 1;
} else {
$errors[] = "The uploaded file is not an image.";
$upload_ok = 0;
}
if ( file_exists( $target_file ) ) {
echo "Sorry, this file already exists.";
$upload_ok = 0;
} else {
echo "<br>This image doesn't exist already.";
}
if ( $_FILES[ "featured_image" ][ "size" ] > 500000 ) {
echo "Sorry, your file is too large.";
$upload_ok = 0;
}
if ( $upload_ok ) {
if ( move_uploaded_file( $_FILES[ "featured_image" ][ "name" ], $target_file ) ) {
echo "<br>Successfully uploaded the image.";
} else {
echo "<br>Couldn't upload the image.";
}
}
}
Я предполагаю, что моя проблема заключается в каталог, я пробовал несколько разных способов ввода целевого каталога, и, похоже, ни один из них не работает (например, сначала ввод переменной $target_file
в виде строки ie. "../../../../content/uploads/imgs
) Я проверяю это, пытаясь загрузить файл, который в настоящее время существует в каталоге загрузки, и вот что напечатано на странице:
File is an image - image/jpeg.
./content/uploads/imgs/post-img-8.jpg
This image doesn't exist already.
Couldn't upload the image.
Для меня целевой каталог выглядит правильно .. Я ' Мы также пытались substr()
потерять точку и пытались потерять ./
. Есть идеи, что я делаю не так?
решено (спасибо Мартину в комментариях):
Я заменил следующее:
$target_dir = '/content/uploads/imgs/';
$target_file = dirname(__FILES__, 4 ) . $target_dir . basename( $_FILES[ "featured_image" ][ "name" ] );
на:
$target_dir ="content/uploads/imgs/";
$target_file = $_SERVER[ "DOCUMENT_ROOT" ] . $target_dir . basename( $_FILES[ "featured_image" ][ "name" ] );