У меня возникла проблема с ExpressionEngine2 после перехода со старого сервера на WHM / cPanel, работающую на CentOS6.4. Простой тестовый код для воспроизведения этой проблемы:
<?php
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
include($protocol . '://' . $host . '/header.html');
?>
<p> Main text...</p>
<?php
include($protocol . '://' . $host . '/footer.html');
?>
Где header.html выглядит как
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
и footer.html выглядит так:
</body>
</html>
Создает тайм-аут Apache:
Warning: include(http://www.domain.com/header.html) [function.include]: failed to open stream: Connection timed out in /home/domain/public_html/test/index.php on line 5
Warning: include() [function.include]: Failed opening 'http://www.domain.com/header.html' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/domain/public_html/test/index.php on line 5
Main text...
Warning: include(http://www.domain.com/footer.html) [function.include]: failed to open stream: Connection timed out in /home/domain/public_html/test/index.php on line 12
Warning: include() [function.include]: Failed opening 'http://www.domain.com/footer.html' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/domain/public_html/test/index.php on line 12
Любая подсказка, что может быть не так с конфигурацией Apache или PHP?
Спасибо
Скорее всего, ничего. Сообщение об ошибке говорит само за себя:
Warning: include(http://www.domain.com/footer.html) [function.include]: failed to open stream: Connection timed out in /home/domain/public_html/test/index.php on line 12
Время ожидания подключения к сайту для удаленного включения истекло. Это своего рода проблема с подключением; возможно, существует проблема с брандмауэром или маршрутизацией (невозможно сказать без информации о вашей среде и, в частности, о том, где находятся два сервера по отношению друг к другу).
Если по какой-то причине вы используете удаленные включения для доступа к файлам на том же сервере (зачем вам это делать), попробуйте использовать браузер на этом сервере для запроса самого себя. Если вы не можете этого сделать, скорее всего, apache не прослушивает интерфейс loopback, а ваш новый hosts
файл вызывает разрешение доменного имени на 127.0.0.1
.