У меня есть такая ситуация в PHP, где include
пропускается на одном сервере, но не на другом (я не настраивал серверы, поэтому не могу рассказать вам больше; на самом деле я не специалист по devops, поэтому я и спрашиваю здесь). Код идентичен на обоих серверах, и оба работают под управлением Ubuntu 14.04 с PHP FPM 5.5.9.
Вот пример:
file1.php
<?php
var_export('1');
include_once('somedir/file2.php');
include_once('include.php');
?>
include.php
<?php
var_export('2');
function foo() {}
?>
somedir / file2.php
<?php
var_export('3');
//notice it has the same name as include.php in the starting directory
include_once('include.php');
?>
somedir / include.php
<?php
var_export('4');
function foo() {}
?>
Если я перейду к file1.php, рабочий сервер напечатает 1, 3, 2. Если я перейду к file1.php на «сломанном» сервере, я получу сообщение об ошибке, что функция foo не может быть переопределена.
Есть ли какая-то настройка на моем «сломанном» сервере, которая вызывает его включение второго включения? Спасибо!
Поместите это в file1.php на обеих системах: echo get_include_path();
и посмотрим что получится (тм).
Других решений пока нет …