любая идея, почему fopen будет тайм-аут для файла, если он на моем сервере, и я знаю, что URL-адрес верен?
обновление: извините, я должен был упомянуть об этом в php. код:
fopen($url, 'r');
Он работает, если я помещаю относительный путь для файла, но не если $ url – это url на моем сервере (но он работает для google.com). Спасибо за помощь.
Ответ Алайтника был прав. Проблема возникает только при доступе к моим собственным файлам сервера через интерфейс ethernet. Как я могу это исправить? Мне нужно иметь доступ к файлу из интерфейса ethernet, потому что URL-адрес загружается динамически (он создается из wordpress cms, поэтому URL-адрес не существует как файл на моем сервере)
вы можете использовать ini_set ('default_socket_timeout', 2); перед открытием fopen $ url. Это фактически установило тайм-аут соединения по умолчанию без ответа. Stream_set_timeout устанавливает тайм-аут потока, который устанавливается через функции fopn или открытия сокета. Попробуйте это может быть полезно для вас.
Похоже, что вы пытаетесь загрузить файл с вашего собственного сервера с использованием протокола HTTP из программы, запущенной на том же сервере?
Если это так, проблема с таймаутом, вероятно, связана с настройкой веб-сервера или сети. Время ожидания обычно происходит только потому, что:
Например, может быть, что ваши локальные правила брандмауэра разрешают доступ только к www.example.com
если эти запросы поступают из интерфейса ethernet, но локальное соединение будет пытаться проходить через интерфейс loopback.
возможно, ваш «allow_url_fopen» установлен в «Выкл.», проверьте ваш файл php.ini или phpinfo ()
Если вы пытаетесь получить HTML-код URL-адреса, я предлагаю использовать curl вместо fopen.
fopen лучше всего использовать с локальными файлами, потому что он не «знает», как справляться с особенностями сетевого ресурса.
Проверьте комментарии к документации по fopen . Там много золота.
Принял меня, чтобы решить это, но здесь я нашел его, благодаря Алнитаку. Открытие файла с локальным хостом в URL-адресе вместо имени хоста было для меня трюком.