Как Вы проверяете, существует ли включение / require_once перед вызовом его я пытался поместить его в ошибочный блок, но PHP не нравилось это.
Я думаю file_exists()
работал бы с некоторым усилием, однако который потребует целого пути к файлу, и родственник включает, не мог быть передан в него легко.
Есть ли какие-либо другие пути?
Я полагаю, что file_exists
работает с относительными путями, хотя вы также можете попробовать что-то в этом роде...
if(!@include("script.php")) throw new Exception("Failed to include 'script.php'");
... нет необходимости говорить, что вы можете заменить исключение на любой метод обработки ошибок по вашему выбору. Идея здесь в том, что if
-заявление проверяет, может ли файл быть включен, а любые сообщения об ошибках, обычно выводимые include
, подавляются префиксом @
.
file_exists
будет работать с проверкой, существует ли требуемый файл относительно текущего рабочего каталога, поскольку он отлично работает с относительными путями. Однако, если включаемый файл находился в другом месте на PATH, вам нужно будет проверить несколько путей.
function include_exists ($fileName){
if (realpath($fileName) == $fileName) {
return is_file($fileName);
}
if ( is_file($fileName) ){
return true;
}
$paths = explode(PS, get_include_path());
foreach ($paths as $path) {
$rp = substr($path, -1) == DS ? $path.$fileName : $path.DS.$fileName;
if ( is_file($rp) ) {
return true;
}
}
return false;
}
file_exists()
работает с относительными путями, она также проверяет, существуют ли каталоги. Используйте is_file()
вместо этого:
if (is_file('./path/to/your/file.php'))
{
require_once('./path/to/your/file.php');
}