Это происходит, когда вы обычно вызываете файл include
, require
или fopen
, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.
Это может произойти по разным причинам:
Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__
или dirname(__FILE__)
:
include __DIR__ . '/inc/globals.inc.php';
или:
require dirname(__FILE__) . '/inc/globals.inc.php';
Обеспечение правильного пути используется одним шагом в устранении этих проблем, это также может быть связано с несуществующими файлами, правами файловой системы, предотвращающими доступ или открытыми ограничениями на основе самого PHP.
Лучший способ для быстрого решения этой проблемы необходимо выполнить контрольный список устранения неполадок ниже.
Вопросы, относящиеся:
Связанные ошибки:
Некоторые ответы здесь утверждают что "JavaScript": префикс является "остатком с былых времен", подразумевая, что он намеренно, особенно обрабатывается браузерами для назад совместимости. Есть ли убедительные доказательства, что дело обстоит так (кто-либо проверил исходный код)?
<span onclick="javascript:alert(42)">Test</span>
мне, это просто читает как:
javascript:
alert(42);
Значение, что "JavaScript": просто маркировка и не имеет никакого эффекта. Это работает, также:
<span onclick="foobar:alert(42)">Test</span>
Обновление:
я действительно немного экспериментировал, и оказывается что, да, "JavaScript": обрабатывается особенно IE, но определенно не так Firefox, Safari, Opera или Chrome:
<span onclick="javascript:while (true) { alert('once'); break javascript; }">Test</span>
На неIE, это просто предупредит "однажды", однажды и затем убежит из цикла. На IE я получаю "Маркировку, не найденную" ошибка. Следующее хорошо работает во всех браузерах:
<span onclick="foo:while (true) { alert('once'); break foo; }">Test</span>
Обновление 2:
я просто понял ссылку http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html в одном из ответов выше в значительной степени переговоров о том же самом.
Это никогда не необходимо на привязках и никогда не является хорошей практикой. Привязка для навигации только. Статья об этой теме бесполезный JavaScript: псевдопротокол .
В начале Вы могли также использовать VBScript в Internet Проводник вместо JavaScript, таким образом определяя "JavaScript:..." было стандартным.
Сегодня, ну, в общем, это не причиняет боль... В будущем мог всегда быть некоторый другой язык сценариев браузера подражателя.
См. Определение языка сценариев (в 18.2.2 в Сценарии Спецификации , HTML 4.01 ).
Я думаю "JavaScript": префикс является остатком с olde дней, когда все еще была неопределенная возможность, что что-либо другой , чем JavaScript могло обрабатывать событие.
Сегодня это является дополнительным и сохранено по назад причинам совместимости. Но я не сказал бы, что это плохо как таковой, это является просто ненужным.
Я всегда полагал, что это было плохое использование на основе того, что можно назвать JavaScript в URL с javascript:
префикс:
<a href="javascript:void(alert('really bad usage!'))">
( Веб-формы , кто-то?)
И только неосведомленные веб-разработчики, которые никогда не осознавали различия между объявлением события и href-объявлением, использовали его.
я сказал бы, что даже атрибуты события являются плохой практикой в большинстве случаев в наше время, и предпочтительный способ присоединить событие при помощи .attachEvent (Internet Проводник) и addEventListener (остальная часть браузеров, как обычно).
И наконец... Google является не всегда Господом всемогущим. Они имеют тенденцию вызывать больше беспокойства, что материал работает вместо следующих стандартов все время.
В Internet Проводник, возможно установить набор языка по умолчанию на VBScript для страницы. В первые годы всегда была идея, что другой язык может использоваться для сценариев в браузере. Поскольку это сложилось, никакой такой язык не осуществился в существенной форме.
я не беспокоюсь этим префиксом языка сам.
Это - хорошая практика для Вашего программиста обслуживания. Компилятор знает, что различие, но настолько молодой, just-out-of-college веб-разработчик не может.