Загрузка переменных во внешнюю папку: работает только один раз - PullRequest
3 голосов
/ 28 мая 2011

Я успешно использую следующий скрипт для загрузки переменных сеанса в другие папки на моем сайте:

<?php
require('../includes/configure.php');
ini_set('include_path', DIR_FS_CATALOG . PATH_SEPARATOR . ini_get('include_path'));
chdir(DIR_FS_CATALOG);
require_once('includes/application_top.php');
?> 

Этот скрипт позволяет мне сразу загрузить шаблон моего заголовка, который включает вывод переменных, которые яwant:

<?php
include('includes/templates/header.php');
?>

Итак, дело в том, что этот скрипт работает безупречно в трех других сценариях (системы CMS) ... Для этого конкретного сценария, над которым я работаю, он работает только в первый раз.Он успешно загружает мой заголовок и переменные правильно, однако при следующей загрузке страницы он не будет работать .

Может кто-нибудь дать объяснение / решение?Спасибо!

1 Ответ

0 голосов
/ 19 июня 2011

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

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On'); // shows in the web page instead of just logs

Тогда ваша страница, вероятно, не останется пустой, и у вас появятся полезные сообщения об ошибках.

Во-вторых, вы должны заменить includeна require.Таким образом, если PHP не может найти файл, вы получите фатальную ошибку.В зависимости от содержимого, require_once может быть даже более подходящим.

Тогда вы должны быть осторожны с относительными путями во включениях.Они не имеют непосредственного отношения к сценарию, в котором находится include.Сначала PHP пытается использовать путь включения и путь вызывающего скрипта (файл, который был запущен первым для этого HTTP-запроса).Рекомендуется использовать полный путь:

require dirname(dirname(__FILE__)) . '/includes/configure.php';
require dirname(__DIR__) . '/includes/configure.php'; // PHP5.3 only

И последнее: не используйте выражение переменные сеанса , когда вы имеете дело с приложением константы ,«Сессия» имеет особое значение в PHP и в веб-разработке в целом.

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