Используя ftp_ *, как я могу определить общедоступный каталог html? - PullRequest
1 голос
/ 16 июня 2010

Если я не знаю общедоступный веб-каталог, может ли мой сценарий определить веб-каталог, чтобы скрипт знал, в какой каталог загрузить файл?

Ответы [ 4 ]

3 голосов
/ 19 июня 2010

Если я не знаю общедоступного веб-каталога, может ли мой сценарий определить веб-каталог, чтобы сценарий знал, в какой каталог загрузить файл?

Если вы говорите об определении веб-корня удаленного хоста, к которому вы подключаетесь с помощью FTP, ответ - нет, определенно нет.

Учетная запись FTP, которую вы используете для входа в систему, может иметь корневой параметр, полностью отличающийся от того, какой виртуальный хост (ы) настроен на сервере. Они не имеют ничего общего друг с другом и не имеют возможности взаимодействовать.

Обычно будет некоторое перекрытие (например, каталог FTP выглядит примерно так: /htdocs/domain.com/, но нет шаблона, на который вы могли бы положиться.

1 голос
/ 21 июня 2010

Хотите ли вы «коммерчески выполнимый» подход или хотите учиться? Этот ответ для второго случая:)

Вы можете загрузить файл со специальным именем (например, fjskjfakdjfklajf.txt) через FTP (ваш PHP-скрипт, вероятно, может сделать это тоже, например, с некоторыми вызовами curl). Затем вы можете запустить другой PHP-скрипт, который попытается обойти файловую систему и найти файл. Вам нужно будет перечислить содержимое каждого каталога (см. Opendir) и проверить для каждой записи, является ли это каталог или файл. Если это файл, и это ваш файл, значит, у вас есть корень FTP. Вероятно, у вас будет ограниченный доступ к серверу, поэтому поисковое действие, вероятно, не будет длиться слишком долго. Вы можете начать с текущей директории, в которой находится ваш скрипт, попытаться перейти к каждой директории, а затем перейти к '..'

Ваш текущий каталог: $ currentDir = dirname ( FILE );

0 голосов
/ 24 июня 2010

Роб -

У вас есть доступ к серверу только через FTP?

У вас уже есть доступ к корневому веб-сайту (или способу добавления сценариев php), но вы хотите узнать их полный путь?

Если ответ на второй вопрос положительный, вы можете сделать то, что предложил @Treur, и установить скрипт php, который возвращает значение DOCUMENT_ROOT, а затем использовать его из своего FTP-клиента.

Полагаю, знание того, что вы пытаетесь сделать и какова ситуация, поможет. :)

0 голосов
/ 16 июня 2010

Вы не хотите знать корневой каталог документа машины, на которой запущен скрипт?В этом случае просто используйте $ _SERVER ['DOCUMENT_ROOT'].

Я не уверен, как получить такую ​​информацию с удаленного хоста (если это вообще возможно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...