2013-07-15 2 views
2

У меня возникают проблемы с поиском PHP-скрипта, который позволяет мне получать содержимое файла txt на удаленном сервере, а затем выводить на переменную. Вывод чего-то в переменную не является трудной частью. Это сбор и чтение содержимого файла, это сложная часть. У кого-нибудь есть идеи?PHP-скрипт для проверки на удаленном сервере, существует файл

Я трал форум и могу найти только метод, который работает локально. Не идеально, поскольку цель удалена.

Целью является то, как определить, существует ли файл на удаленном сервере и выводить статус в html.

Идеи?

ответ

3

Вы можете попробовать использовать этот код:

if (file_exists($path)) { 
    echo "it exists"; 
} else { 
    echo "it does not exist"; 
} 

Как вы можете видеть $path путь вашего файла. Конечно, вы можете написать что-нибудь еще, а не echo.

+1

Будет ли это работать с удаленным файлом? –

+0

Да, я использую этот код на своем сайте тоже :) –

2

Доступ к файлам на других серверах может быть довольно сложным! Если у вас есть доступ к файлу через ftp, вы можете использовать ftp для извлечения файла, например, с помощью ftp_fget().

Если у вас нет доступа к файловой системе через ssh, вы можете проверить ответ, который дает сервер при запросе файла. Если сервер отвечает с ошибкой 404, файл либо не существует, либо недоступен через http из-за конфигурации сервера.

Вы можете проверить это через завиток, см. this tutorial для подробного объяснения получения кода ответа через завиток.

+0

hmmm ok его не над ftp.Он использует этот формат URL: *** https: //planningpublicaccess.site.gov.uk/some-directory/version.txt ***, поэтому с использованием SSL (https). Я могу просматривать файл «version.txt» в браузере, но без радости над PHP :( – Echelon

+0

ok Я был немного придурком здесь! Очевидно, это не имеет значения, как он подключается, но тот факт, что брандмауэр на другом конце руки мой запрос! – Echelon

4

Если предположить, что удаленный сервер доступен по http или ftp вы можете использовать file_exists():

if (file_exists("http://www.example.com/somefile.txt")) { 
echo "Found it!; 
} 

или

if (file_exists("ftp:user:[email protected]/somefile.txt")) { 
echo "Found it!; 
} 
+0

Me likey первый! – Echelon

0

Я знаю, что это старый нить, но, как Ларс Эберт отмечает, проверка поскольку наличие файла на удаленном сервере может быть сложным, поэтому проверка ответа сервера с использованием cURL заключается в том, как я смог сделать это на нашем большом сайте путешествий. Использование file_exists() каждый раз вызывало ошибку, но проверка «200 OK» оказалась весьма успешной. Вот код, который мы используем для проверки изображений для нашей страницы гостиницы списку:

$media_url = curl_init("http://pathto/remote_file.png"); 
curl_setopt($media_url, CURLOPT_RETURNTRANSFER, true); 
$media_img = curl_exec($media_url); 
$server_response = curl_getinfo($media_url, CURLINFO_HTTP_CODE); 
if($server_response != 200){ 
    echo "pathto/graphics/backup_image.png"; 
}else{ 
    echo "http://pathto/remote_file.png"; 
} 

Где «http://pathto/remote_file.png» отдаленное изображение мы ищем, но мы должны знать, действительно ли это там. И «pathto/graphics/backup_image.png» - это то, что мы показываем, если удаленное изображение не существует.

Я знаю, что это ужасно многословно, по сравнению с file_exists(), но это также более точно, по крайней мере, до сих пор.

Смежные вопросы