Просмотр полной версии : каскадный include
Всем добрый день!
Проблема с каскадным инклюдированием.
Пример 1: вставляю друг в дружку через include() -- работет.
Пример 1: пишу ф-цию, просматривающую папку с именем и $dirname позволяющую инклюдировать все ее файлы.function include_dir($dirname)
{
$ECHO_include_dir = "";
$handle = @opendir($dirname);
while($current_file=readdir($handle))
{
if($current_file!=="." && $current_file!==".." && is_file($dirname."/".$current_file))
{
include ($dirname."/".$current_file);
$ECHO_include_dir = $ECHO_include_dir.$current_file."<br>\n";
}
}
echo $ECHO_include_dir;
}И вот тут скритп престает работать...
Оба примера в аттаче.
В чем тут может быть дело?
Спасибо.
<?php
function include_dir($dirname)
{
$ECHO_include_dir = "";
$handle = opendir($dirname);
while($current_file=readdir($handle))
{
if($current_file!=="." && $current_file!==".." && is_file($dirname."/".$current_file))
{
include ($dirname."/".$current_file);
$ECHO_include_dir = $ECHO_include_dir.$current_file."<br>\n";
}
}
echo $ECHO_include_dir;
}
include_dir ("dir_c");
?>
Ошибки при вызове файла через a.php (не при обращнии к b.php напрямую):
Warning: opendir(dir_c): failed to open dir: Invalid argument in z:\home\centrimax\www\adminpanel\test\02_dir_a\dir_b\b.php on line 5
Warning: readdir(): supplied argument is not a valid Directory resource in z:\home\centrimax\www\adminpanel\test\02_dir_a\dir_b\b.php on line 6
PHP FAQ: Ничего не работает! Что делать??? (http://phpfaq.ru/debug)
а так же советую попытаться перевести ошибки и вообще впредь думать перед тем как писать на форум подобный бред
2 Nirva
Не стоит горячиться. Понятно, что ошибка в opendir -- точнее, конечно, не в самой ф-ции, а в параматре. Но почему она возникает, тогда ведь и иклюд (в первом примере) не должен был бы работать!
Насколько я понимаю, opendir пытается открыть папку dir_c, беря за точку отщета местонахождение a.php, т.е. сначала b.php встраивается в a.php, и только потом срабатывает opendir(), точнее моя include_dir(), в которой находится opendir().
С инклюд (пример 01) все наоборот -- b.php инклюдится в a.php только после того, как его собственный include(c.php) выполнен... Или я не понимаю чего... :confused:
PHP FAQ: Ничего не работает! Что делать??? (http://phpfaq.ru/debug)
интересно, со второго раза дойдет?
kompadre
20.12.2005, 09:03
Рабочая папка в "вставленном" коде не меняется. Попробуй следующие
file1.php :
<?
include 'dir2/file2.php';
?>
dir/file2.php :
<?
echo (getcwd() . '<br>');
echo __FILE__;
?>
Рассказывать как зделать так что-бы заработал твой код не буду потому что концепция совсем не правильная. Динамически "вставлять" код - извращение. Максимум хитрости в инклюдном деле на которую может себе позволить пойти программист -- условное "вставление" (в одном случае вставляем одно, в другом - другое). Просто откажись от идеи, подумай как зделать другим путём.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.