В php я новичок и поэтому не особо понимаю в чем моя ошибка Поставил денвер с php 5.3 и пакет расширений Накатил DLE 9.8 И всё работает, но мне нужно влепить еще одну маленькую cms модулем Сам DLE и cms по отдельности работают, но стоит мне впилить эту cms в окно {content} сайта, как всё крашится с ошибкой Fatal error: require_once(): Failed opening required './smarty/libs/Smarty.class.php' (include_path='.;Z:\usr\local\php5\pear;/usr/local/php5/PEAR') in Z:\home\site.com\www\cabinet\index.php on line 4 Сама cms использует для работы smarty И я сначала подумал, что этот smarty конфликтует с каким-нибудь API, но такая ошибка появляется всегда, как в основном файле модуля появляется команда require_once Помогите решить проблему позязя)) Вот сам основной файл подключаемого модуля Код (Text): <?php define('INCLUDE_CHECK',true); session_start(); require_once('./smarty/libs/Smarty.class.php'); include ('./include/config.php'); include ('./include/kassa_config.php'); include ('./include/func.php'); $path = dirname(__FILE__); define('GLI',true); $logger = new Logger("./mcshop.log"); $log_date = "[" . date("d/m/Y H:i") . "] "; $q = mysql_query("SELECT `value` FROM `settings` WHERE `name`='theme';",$sql); $theme = mysql_result($q,0); $tpl = new Smarty(); $theme_path = './theme/'.$theme.'/'; $tpl->template_dir = $theme_path; $tpl->compile_dir = './cache/'; $tpl->cache_dir = './cache/'; $tpl->assign('path', $theme_path); if(empty($_SESSION['id'])) { // Тут делаем авторизацию $tpl->assign('title', 'Авторизация'); if(isset($_GET['error'])) { $tpl->assign('errno', 'Неверный логин или пароль!'); $logger->WriteLine($log_date . "Неудачная попытка авторизации с ip: " . $_SERVER['REMOTE_ADDR']); } $tpl->assign('title', 'Личный Кабинет'); $tpl->display('guest.tpl'); } else { $username = mysql_real_escape_string($_SESSION['name']); $right = privelegie($username, $db_users, $db_users_name, $sql); $q = mysql_query("SELECT money FROM {$db_users} WHERE {$db_users_name}='$username';",$sql); $tpl->assign('money', mysql_result($q,0)); $tpl->assign('username', $username); $q = mysql_query("SELECT value FROM settings WHERE name='ip' OR name='port';",$sql); $ip = mysql_result($q,0); $port = mysql_result($q,1); $settings = GetSettings($sql); $server = Server($ip,$port); if(!isset($server['name'])) $server['name'] = 'Неопознанно'; $tpl->assign("shop_id",$shop_id); $tpl->assign("right",$right); $tpl->assign("map_enabled",$settings['map_enabled']); $tpl->assign('srv_name', $server['name']); $tpl->assign('ip', 'ip='.$ip.'&port='.$port); $tpl->assign('navigation', 'menu.tpl'); if(!isset($_GET['page']) || $_GET['page'] == '') { $tpl->assign('title', 'Личный Кабинет'); $tpl->assign('content', 'skin.tpl'); include("./modules/blocks_main.php"); include("./modules/skin.php"); include("./modules/cp.php"); $tpl->assign('welcome1', 'Добро пожаловать '.$username.'!'); $tpl->assign('welcome2', 'Это ваш личный кабинет на игровом сервере '.$server['name']); } else { $full_path = './theme/'.$theme.'/'.$_GET['page'].'.tpl'; if(!file_exists($full_path)) { $tpl->assign('title', 'Ошибка 404'); $tpl->assign('content', 'error.tpl'); $tpl->assign('welcome1', 'Ошибка 404'); $tpl->assign('welcome2', ''); } if($_GET['page'] == 'buy') { $tpl->assign('title', 'Покупка статуса'); include("./modules/buy.php"); $tpl->assign('welcome1', 'Покупка статуса'); $tpl->assign('welcome2', 'Здесь вы можете купить игровой статус'); } if($_GET['page'] == 'skin') { $tpl->assign('title', 'Сменить скин'); include("./modules/skin.php"); $tpl->assign('content', 'skin.tpl'); $tpl->assign('welcome1', 'Смена скина'); $tpl->assign('welcome2', 'Здесь вы можете изменить свой игровой скин'); } if($_GET['page'] == 'support') { $tpl->assign('title', 'Техническая поддержка'); include("./modules/support.php"); $tpl->assign('content', 'support.tpl'); $tpl->assign('welcome1', 'Тех поддержка'); $tpl->assign('welcome2', 'Здесь вы можете написать в тех. поддержку'); } if($_GET['page'] == 'cp') { $tpl->assign('title', 'Дополнительные услуги'); include("./modules/cp.php"); $tpl->assign('welcome1', 'Дополнительные услуги'); $tpl->assign('welcome2', 'Здесь вы можете воспользоваться другими услугами сервера'); } if($_GET['page'] == 'admin') { $tpl->assign('title', 'Панель администратора'); include("./modules/admin.php"); $tpl->assign('welcome1', 'Панель администратора'); $tpl->assign('welcome2', 'Здесь вы можете управлять магазином в зависимости от Ваших прав'); } if($_GET['page'] == 'map') { $tpl->assign('title', 'Карта сервера'); include("./modules/map.php"); $tpl->assign('welcome1', 'Карта сервера'); $tpl->assign('welcome2', 'Здесь вы можете увидеть карту сервера'); } if($_GET['page'] == 'blocks') { $tpl->assign('title', 'Продажа блоков'); include("./modules/blocks.php"); $tpl->assign('welcome1', 'Продажа блоков'); $tpl->assign('welcome2', 'Здесь вы можете купить необходимыа Вам для игры блоки'); } // Для интерфейсов оплаты if($_GET['page'] == 'success') { $tpl->assign('title', 'Пополнение счета'); include("./kassa/success.php"); $tpl->assign('welcome1', 'Пополнение счета'); $tpl->assign('welcome2', ''); } if($_GET['page'] == 'fail') { $tpl->assign('title', 'Пополнение счета'); include("./kassa/fail.php"); $tpl->assign('welcome1', 'Пополнение счета'); $tpl->assign('welcome2', ''); } if($_GET['page'] == 'quit') { session_destroy(); header("Location: index.php"); } } $tpl->display('main.tpl'); } mysql_close($sql);
Re: [Помогите] Fatal error: require_once() у тебя в папке Z:\home\site.com\www\cabinet\ есть папка smarty ?
require/include ищут файл относительно папки с "точкой входа", а не относительно папки с файлом в котором стоит этот require/include. поясню: если наш запрос обрабатывается файлом Z:\home\site.com\www\index.php который подключает, например файл './cabinet/ololo.php' , то есть уже Z:\home\site.com\www\cabinet\ololo.php а тот, в свою очередь пытается подключить './smarty/libs/Smarty.class.php' , то этот файл будет искаться в Z:\home\site.com\www\smarty\libs\Smarty.class.php -- относительно первого файла!!! никаких "cabinet" здесь уже не наблюдаем Добавлено спустя 5 минут 13 секунд: хотите инклудить относительно текущего файла? делайте так: Код (PHP): include __DIR__.'/path/to/file.php'; // начиная с PHP 5.3 или Код (PHP): include dirname(__FILE__).'/path/to/file.php'; // во всех версиях PHP Добавлено спустя 3 минуты 57 секунд:p.s. ты глянь в свой код, там даже есть готовая переменная $path, которую ты можешь использовать для "умного" инклуда
Re: [Помогите] Fatal error: require_once() Спасибо вам огромное)) Благодаря вам сэкономил кучу времени Адреса поправил в основном фале руками, но есть ли какой нибудь инструмент, который исправит это автоматически?
верно. и тем не менее. http://goo.gl/YGEHv я так понимаю, что здесь "более эффективно" значит не "более быстро", а "менее глупо". зачем нам перебирать какие-то папки в надежде что там упоминается ".", когда мы четко знаем где в НАШЕМ проекте находится нужный файл. если нам понадобится подключить pear-овский модуль, тогда конечно полагаемся на include_path