Доступ к супер-объекту CodeIgniter из внешнего php-скрипта вне установки codeigniter

Я так долго пробовал, но не мог найти решение. По какой-то причине мне нужно получить доступ к супер-объекту codeigniter get_instance () из внешнего php-скрипта, который находится вне установки codeigniter.

Так, например, у меня есть собственный php-скрипт под названием my_script.php внутри public_html. И codeigniter установлен внутри public_html / codeigniter.

Вслед за обсуждением здесь: http://ellislab.com/forums/viewthread/101620/ Я создал файл под названием external.php и поместил его в папку public_html / codeigniter, он содержит следующий код:

<?php // Remove the query string $_SERVER['QUERY_STRING'] = ''; // Include the codeigniter framework ob_start(); require('./new/index.php'); ob_end_clean(); ?> 

Затем я создал файл my_script.php и поместил его в папку public_html (вне установки codeignign), он содержит следующий код:

 <?php require('new/external.php'); $ci =& get_instance(); echo $ci->somemodel->somemethod(); ?> 

Теперь, когда я загружаю файл my_script.php из браузера, он вызывает следующую ошибку:

Возможно, ваш путь к системной папке установлен правильно. Откройте следующий файл и исправьте это: index.php

Если я поместил файл my_script.php в папку codeigniter с исправленным пути к файлу в функции require (), тогда он будет работать. Но мне действительно нужно, чтобы она работала извне установки кода.

Любая идея, как избавиться от этой проблемы?

Заранее спасибо.

Related of "Доступ к супер-объекту CodeIgniter из внешнего php-скрипта вне установки codeigniter"

Основной index.php CI устанавливает пути к папкам системы и приложения. Если вы включаете index.php из другого каталога, эти пути устанавливаются относительно вашего каталога «включая».

Попробуйте изменить следующие строки в index.php

 $system_path = 'system'; // change to... $system_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'system'; // and... $application_folder = 'application'; // change to... $application_folder = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'application'; 

Имя dirname(__FILE__) даст вам абсолютный путь index.php даже если вы dirname(__FILE__) его в другое место.

Проблема с загрузкой codeigniter из внешнего файла вне установки codeigniter решена с использованием первого ответа, который я обозначил как принятый. И проблема с вызовом контроллера / метода по умолчанию была решена с использованием константы (define). Вот обновленный код для файла external.php:

 <?php // Remove the query string $_SERVER['QUERY_STRING'] = ''; // Include the codeigniter framework define("REQUEST", "external"); ob_start(); require('./new/index.php'); ob_end_clean(); ?> 

И вот метод контроллера по умолчанию:

 public function index($flag = NULL) { if (constant("REQUEST") != "external") { // some code here } } 

Большое спасибо вкладчику hyubs. @hyubs