Я могу изменить заголовки Запроса HTTP, отправленного браузером?

Предупреждение: [fункция] : не удалось открыть поток: [причина]

Это происходит, когда вы обычно вызываете файл include , require или fopen, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.

Это может произойти по разным причинам:

  • неправильный путь к файлу
  • путь к файлу относительный
  • include path is wrong
  • разрешения слишком ограничительные
  • SELinux в силе
  • и многие другие ...

Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__ или dirname(__FILE__):

include __DIR__ . '/inc/globals.inc.php';

или:

require dirname(__FILE__) . '/inc/globals.inc.php';

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

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

Вопросы, относящиеся:

Связанные ошибки:

65
задан user66001 7 March 2014 в 18:45
поделиться

3 ответа

Я не думаю, что возможно сделать это в способе, которым Вы пытаетесь сделать это.

Признак принятого формата данных обычно делается посредством добавления расширения имени ресурса. Так, если у Вас есть ресурс как

/resources/resource

и GET /resources/resource возвраты его представление HTML, чтобы указать на желание его представления XML вместо этого, можно использовать следующий шаблон:

/resources/resource.xml

необходимо сделать принятое волшебство определения типа контента на стороне сервера, затем.

Или использование JavaScript, поскольку James предлагает.

8
ответ дан Milan Novota 24 November 2019 в 15:32
поделиться

Я частично не согласился бы с предложением Милана встраивания требуемого представления в URI.

, Если во всяком случае возможно, URIs должен [только 1 110] использоваться для обращения к ресурсам и не для туннелирующих методов/глаголов HTTP. В конечном счете определенное бизнес-действие (редактирование, блокировка, и т.д.) могло быть встроено в URI, если создают (POST) или обновляют (ПОМЕЩЕННЫЙ) один, не служат цели:

POST http://shonzilla.com/orders/08/165;edit

В случае запроса особого представления в URI необходимо было бы разрушить дизайн URI, в конечном счете делающий его более ужасный, смешав два отличных понятия REST в том же месте (т.е. URI) и делая его тяжелее, чтобы в общем обработать запросы на серверной стороне. То, что предлагает Милан, и многие делают то же, включая Flickr, является точно этим.

Вместо этого БОЛЕЕ УСПОКОИТЕЛЬНЫЙ подход был бы использование отдельного места для кодирования предпочтенного представления при помощи Accept HTTP-заголовок, который используется для согласования содержания, где клиент говорит серверу, какие типы контента это может обработать/обработать, и сервер пытается обработать запрос клиента. Этот подход является частью стандарт HTTP 1.1 , программное обеспечение, совместимое и поддерживаемое веб-браузерами также.

Сравнивают это:

GET /orders/08/165.xml HTTP/1.1
or
GET /orders/08/165&format=xml HTTP/1.1

к этому:

GET /orders/08/165 HTTP/1.1
Accept: application/xml

От веб-браузера можно запросить любой тип контента при помощи setRequestHeader метод XMLHttpRequest объект. Например:

function getOrder(year, yearlyOrderId, contentType) {
 var client = new XMLHttpRequest();
 client.open("GET", "/order/" + year + "/" + yearlyOrderId);
 client.setRequestHeader("Accept", contentType);
 client.send(orderDetails);
}

Для подведения его: адрес, т.е. URI ресурса должен быть независим от своего представления и XMLHttpRequest.setRequestHeader, метод позволяет Вам запрашивать любое представление с помощью Accept HTTP-заголовок.

За Ваше здоровье!
Shonzilla

42
ответ дан Shonzilla 24 November 2019 в 15:32
поделиться

Используйте некоторый JavaScript!

xmlhttp=new XMLHttpRequest();
xmlhttp.open('PUT',http://www.mydomain.org/documents/standards/browsers/supportlist)
xmlhttp.send("page content goes here");
1
ответ дан James Anderson 24 November 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: