2010-04-20 4 views
4

Когда я пытаюсь включить файл с использованием include_once в php, который показывает предупреждение как Warning: include_once (1) [function.include-once]: не удалось открыть поток: нет такого файла или каталога в /var/www/test/content_box.php в строке 2. Обычно файл находится в моей директории. Я использую ubuntu (OS) . Как мы можем предотвратить это предупреждение. Если кто-нибудь знает, пожалуйста, помогите мнеPHP Предупреждение при использовании include_once()

+0

(1)? Что это? по крайней мере, добавьте расширение на [include_once ('1.php')]; – Ben

+2

Несомненно, под предупреждением вы подразумеваете, как правильно включить файл, нет? –

+3

@Ben это скорее логический результат некоторой функции, отбрасывается на строку :) –

ответ

13

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


Надлежащим образом, чтобы предотвратить предупреждение было бы проверить, если первый существует первый и не пытайтесь включить его, если он не делает.

if (file_exists($includefile)) { 
    include_once($includefile); 
} 

(очевидно, замените $ IncludeFile с файлом вы в том числе)

Быстрый и грязный способ сделать это, что я DO NOT рекомендовать бы подавить предупреждение с @ выражение.

@include_once($includefile); 

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

Как указывали другие, «1» является необычным именем файла для файла PHP, но я предполагаю, что у вас есть определенная причина для этого.

+2

первый обсуждается, но второй ужасен –

+1

Вот почему Я использовал его как пример того, что не делать. – thomasrutter

+0

похоже, что вы только что взяли этот вопрос слишком буквально. это большая проблема SO. все просто отвечают на вопрос, не пытаясь придумать это - что вызвало этот вопрос, есть ли другие интерпретации? –

1

это вполне Необычное имя для файла php - одна цифра 1. Вы уверены, что у вас есть такой файл?

7

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

// inc.php is in the same directory: 
include (dirname(__FILE__) . "/inc.php"); 

// inc.php is in a subdirectory 
include (dirname(__FILE__) . "/folder/inc.php"); 

// inc.php is in a parent directory 
include (dirname(dirname(__FILE__)) . "inc.php"); 

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

+1

Или используйте '__DIR__', если у вас есть PHP 5.3. – Shabbyrobe

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