путь назначения для move_uploaded_file в php

Мне нужно знать, что использовать для пути назначения для функции move_uploaded_file PHP. (см. http://php.net/manual/en/function.move-uploaded-file.php )

Прямо сейчас у меня есть код, который отлично работает. Корневой каталог моего домена содержит следующие элементы (среди прочих):
uploads <-this – это папка
add-photo-submit.php <-this – это файл PHP, в котором используется move_uploaded_file

В add-photo-submit.php у меня есть следующая строка кода:

$target_path = "uploads/" . basename($_FILES['uploadedFile']['name']); 

$ target_path используется как параметр назначения для функции. Это работает отлично, когда я обращаюсь к файлу через www.mydomain.com/add-photo-submit.php

Тем не менее, я недавно изменил файл .htaccess, чтобы удалить .php и добавить конечную косую черту. Теперь файл PHP доступен по адресу www.mydomain.com/add-photo-submit/. Я думаю, что файл PHP интерпретирует целевой путь как «www.mydomain.com/add-photo-submit/uploads/filename.jpg».

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

В будущем я бы хотел настроить мой корневой каталог следующим образом:
корень
-admin (папка)
-add-фото-submit.php
-uploads

Какая система координат имеет move_uploaded_file?

Вы должны использовать document_root для получения абсолютного пути следующим образом:

 $target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . basename($_FILES['uploadedFile']['name']); 

Операции с локальными именами PHP не имеют представления о том, что сделал mod_rewrite для ваших URL-адресов, и имеют дело только с реальными путями файловой системы. Вы могли бы mod_rewrite превратить ваш хороший простой example.com/index.php в отвратительный example.com/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/yz и PHP все равно будет работать в том же физическом каталоге на сервере.

Если PHP-скрипт находится в /home/sites/example.com/html/index.php , и вы используете uploads/example.jpg качестве вашего пути перемещения, тогда PHP попытается поместить это изображение в /home/sites/example.com/html/uploads/example.jpg , независимо от того, какой был запрошенный URL.

Или используйте

 $target_path = "../uploads/" . basename($fileUpload['name']); 

Мы можем использовать dirname(__FILE__) вместо корневого сервера, объявляющего ниже строки в любом из файлов root (index.php)

 $_SESSION["uploads_base_url"]=dirname(__FILE__); 

и теперь вы можете использовать его в любых файлах, где требуется загрузка.

 echo $uploads_base_url=$_SESSION["uploads_base_url"];