2013-10-24 2 views
-1

Я в основном ищет, если заявление:Проверьте с PHP, если файл находится на удаленном сервере

если (....) {}

еще {}

... который проверит, находится ли текущий файл на удаленном сервере (онлайн, на моем веб-сайте, а не в моей локальной конфигурации с помощью Xampp или Mamp).

Я уже провел некоторое исследование, и это привело меня к file_exists, но я не уверен, что это то, что я хочу, или если есть лучший способ сделать это.

Я не уверен, что это актуально Почему Я делаю это, но здесь идет речь: у меня есть пара различных конфигураций на странице functions.php, и я хочу, чтобы она действовала по-разному, когда она в производстве, и когда он находится в тестовом режиме локально.

+2

'$ _SERVER [«server_addr»] 'должны сделать трюк – Tchoupi

+0

Вы должны придумать какой-то другой критерий, чем * текущий файл на удаленном сервере *. Текущий файл всегда находится на локальном сервере, вот что делает его * current *. – Oswald

ответ

1

Если файл находится на другом хосте, вы можете проверить его с помощью gethostbyaddr и сопоставить его с вашим локальным хостом или сервером, за которым следуют инструкции действий.

3

Есть несколько условий, которые были исключены из вашего вопроса, например, может ли файл быть вызван через HTTP-запрос, и независимо от того, является ли ваш файл тем же на удаленном сервере. Если все, что вам нужно, о существовании файла, и оно отображается через HTTP, вы можете сделать HTTP-запрос для файла и проверить код ответа. Возможно, вы захотите поместить небольшую логику обработки в файл для обработки этих запросов. Если файл недоступен через HTTP-запрос, есть еще пара опций:

1) Создайте сценарий, чтобы проверить файл. Для обеспечения безопасности это потребует дополнительной работы. 2) FTP на сервер и попробуйте загрузить файл.

С любым решением, если вы хотите знать, является ли файл одинаковым в обоих местах, вы можете использовать хэш MD5 на обоих концах, чтобы узнать.

1

Вы можете использовать filectime, который возвращает FALSE, если файл удален.

$remote = empty(@filectime($url)); 
if ($remote) { 
    // File is remote. 
} 
else { 
    // File is local. 
} 
Смежные вопросы