Относительные каталоги не работают так, как вы думаете, они должны в PHP
(в соответствии с вашим мышлением JavaScript) - в основном потому, что PHP
это серверная и теоретически может получить доступ к любому файлу в операционной системе (кроме случаев, когда он находится в тюрьме и т. д.). Наиболее близким вы найдете что-то вроде $_SERVER['DOCUMENT_ROOT']
, которое даст вам относительный путь к веб-корню -Однако, если вы используете PHP
на основе клиента - "относительного корня" нет - В cli
вы просто используете ./
(или ничего), ../
, /
, чтобы сообщить php " относится к в той же директории, что и скрипт "IE
./directory/yourfile.txt //This starts in the SAME directory as the php file
../directory/yourfile.txt // This goes up one directory, and then you can drill back down.
../../../directory/directory/directory/file.txt // Just like above, but up 3 directories
/directory.file.txt // Starts from the server root -- IE /var/www/etc/etc/etc
Кроме использования этих методов, вы можете написать свой собственный способ обработки этого с помощью своих собственных методов и т. д. -Есть много школ, хотя и по этому вопросу.Некоторые говорят, что использование абсолютных путей - это путь ... Но другие утверждают, что для переносимости относительный - это путь.На самом деле это зависит от вашей программы и от того, для чего вы ее используете. Будет ли она развернута и т. Д. Если она последняя и основана на сети, то достаточно $_SERVER['DOCUMENT_ROOT']
, но вы должны структурировать свою программу для создания классов,контроллеры, модули и т. д. легко доступны при кодировании.(поэтому напишите методы для работы с каталогами)
ОБНОВЛЕНИЕ для вашего комментария
Вы спросили, можно ли передать это php, и ответ- да, и нет.
Да, если страница уже загружена и вы хотите отправить информацию как часть действия (форма отправки / вызов AJAX)
Да, если вы ужезагрузили страницу и сохранили файл cookie с этой информацией на предыдущей странице / сеансе
Нет, если пользователь никогда не был на странице и первая загрузка страницы уже произошла, и никаких других действий не ожидаетсятакие как AJAX или отправка форм.
Исходя из того, что вы спрашиваете, вы можете просто:
var mypath = document.getElementsByTagName('INPUT')[0].files[0].webkitRelativePath
$.post("send_path_to_php.php", {path: mypath}, function(result){
alert(result); // result of php page response
});
Это отправит var
mypath в php
файл с именем send_path_to_php.php
.Файл php
сможет извлечь $_POST['path]
Затем вы сделаете все, что вы хотите в указанном php
- Все, что вы echo
/ return
будет в обратном вызове result