Странное поведение с каскадным включением (2 сервера действуют по-разному) - PullRequest
1 голос
/ 05 августа 2011

Мы воспроизвели ошибку, которая возникает на одном из наших производственных серверов.Вот как это происходит:

У нас есть 3 PHP-файла

test1.php:

Test 1
<?php require_once('test2.php'); ?>

test2.php:

Test 2
<?php require_once('test3.php'); ?>

test3.php

Test 3

include_path одинаково на обоих серверах, и точка не включена в негопо другим причинам:

php_value include_path /var/www/xxxxxx/php/ZendFramework/1.11.x/:/var/www/xxxxxx/php/

На нашем сервере dev все в порядке(выводит Тест 1, Тест 2, Тест 3), в режиме онлайн, когда мы загружаем файлы, при первой загрузке файла /test1.php все в порядке, при втором вызове и т. д. получаем:1 Test 2

Предупреждение: require_once (test3.php) [function.require-Once]: не удалось открыть поток: в строке нет такого файла или каталога 2

Неустранимая ошибка: require_once () [function.require]: не удалось открыть требуемый файл test3.php (include_path = '/ var / www / xxxxxx / php / ZendFramework / 1.11.x /: / var / www / xxxxxx / php /') в строке 2

Есть ли другие вещи, которые мы должны знать?Что насчет того, что влияет на поведение включаемых файлов в PHP, кроме include_path?Мне нужно было различить, что может произойти, поскольку у меня нет доступа к файлам конфигурации серверов на данный момент.И почему он работает в самый первый раз на рабочем сервере и выходит из строя после?Я просто не могу объяснить, что это может быть.

Редактировать: Иногда в сообщении об ошибке иногда появляются странные символы (и изменения при каждом обновлении):

[...] Нет такого файла или каталога в ° µ4ª в строке 4

1 Ответ

0 голосов
/ 05 августа 2011

Какое программное обеспечение для контроля версий вы используете?В прошлом у нас были проблемы с Perforce, когда мы интегрировали из dev в prod, и файл не копируется во все балансировщики нагрузки.Сложно устранить неполадки в первый раз, потому что это кажется несовместимой ошибкой PHP, и в зависимости от того, какой рабочий сервер вы проверяете, файл, скорее всего, будет там.

...