Проблемы с настройкой codeigniter с искрами и активной записью

У меня возникают проблемы с установкой моей sparks для работы с моей установкой codeigniter

вот шаги, которые я сделал, которые были следующими:

  • Я пошел в свой корень моей папки проекта codeigniter через мой PHPCLI, чтобы установить искры, используя приведенную ниже команду

    php -r "$(curl -fsSL http://getsparks.org/go-sparks)"
  • я установил библиотеку активной записи, используя команду искры ниже

    php tools\spark install -v0.0.2 php-activerecord

2а. эта команда дала мне структуру папок follwing

-application
-sparks
 -php-activerecord
 -0.0.2
 -config
 -variables
 -vendor
-system
-tests
-tools
 -lib
 -spark
 -sparktypes
 -test
-user_guide

2b. эта команда генерирует sparks, содержащую папку php active record, в которую вносятся необходимые компоненты php-activerecord, при использовании команды создается файл MY_Loader.php, который выглядит следующим образом

<!--?php if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Sparks
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package CodeIgniter
 * @author CodeIgniter Reactor Dev Team
 * @author Kenny Katzgrau <[removed_email]-->
 * @since CodeIgniter Version 1.0
 * @filesource
 */
/**
 * Loader Class
 *
 * Loads views and files
 *
 * @package CodeIgniter
 * @subpackage Libraries
 * @author CodeIgniter Reactor Dev Team
 * @author Kenny Katzgrau <[removed_email]>
 * @category Loader
 * @link http://codeigniter.com/user_guide/libraries/loader.html
 */
class MY_Loader extends CI_Loader
{
 /**
 * Keep track of which sparks are loaded. This will come in handy for being
 * speedy about loading files later.
 *
 * @var array
 */
 var $_ci_loaded_sparks = array();
 /**
 * Is this version less than CI 2.1.0? If so, accomodate
 * @bubbafoley world-destroying change at: http://bit.ly/sIqR7H
 * @var bool
 */
 var $_is_lt_210 = false;
 /**
 * Constructor. Define SPARKPATH if it doesn't exist, initialize parent
 */
 function __construct()
 {
 if(!defined('SPARKPATH'))
 {
 define('SPARKPATH', 'sparks/');
 }
 $this->_is_lt_210 = (is_callable(array('CI_Loader', 'ci_autoloader'))
 || is_callable(array('CI_Loader', '_ci_autoloader')));
 parent::__construct();
 }
 /**
 * To accomodate CI 2.1.0, we override the initialize() method instead of
 * the ci_autoloader() method. Once sparks is integrated into CI, we
 * can avoid the awkward version-specific logic.
 * @return Loader
 */
 function initialize()
 {
 parent::initialize();
 if(!$this->_is_lt_210)
 {
 $this->ci_autoloader();
 }
 return $this;
 }
 /**
 * Load a spark by it path within the sparks directory defined by
 * SPARKPATH, such as 'markdown/1.0'
 * @param string $spark The spark path withint he sparks directory
 * @param <type> $autoload An optional array of items to autoload
 * in the format of:
 * array (
 * 'helper' => array('somehelper')
 * )
 * @return <type>
 */
 function spark($spark, $autoload = array())
 {
 if(is_array($spark))
 {
 foreach($spark as $s)
 {
 $this->spark($s);
 }
 }
 $spark = ltrim($spark, '/');
 $spark = rtrim($spark, '/');
 $spark_path = SPARKPATH . $spark . '/';
 $parts = explode('/', $spark);
 $spark_slug = strtolower($parts[0]);
 # If we've already loaded this spark, bail
 if(array_key_exists($spark_slug, $this->_ci_loaded_sparks))
 {
 return true;
 }
 # Check that it exists. CI Doesn't check package existence by itself
 if(!file_exists($spark_path))
 {
 show_error("Cannot find spark path at $spark_path");
 }
 if(count($parts) == 2)
 {
 $this->_ci_loaded_sparks[$spark_slug] = $spark;
 }
 $this->add_package_path($spark_path);
 foreach($autoload as $type => $read)
 {
 if($type == 'library')
 $this->library($read);
 elseif($type == 'model')
 $this->model($read);
 elseif($type == 'config')
 $this->config($read);
 elseif($type == 'helper')
 $this->helper($read);
 elseif($type == 'view')
 $this->view($read);
 else
 show_error ("Could not autoload object of type '$type' ($read) for spark $spark");
 }
 // Looks for a spark specific autoloader
 $this->ci_autoloader($spark_path);
 return true;
 }
 /**
 * Pre-CI 2.0.3 method for backward compatility.
 *
 * @param null $basepath
 * @return void
 */
 function _ci_autoloader($basepath = NULL)
 {
 $this->ci_autoloader($basepath);
 }
 /**
 * Specific Autoloader (99% ripped from the parent)
 *
 * The config/autoload.php file contains an array that permits sub-systems,
 * libraries, and helpers to be loaded automatically.
 *
 * @param array|null $basepath
 * @return void
 */
 function ci_autoloader($basepath = NULL)
 {
 if($basepath !== NULL)
 {
 $autoload_path = $basepath.'config/autoload'.EXT;
 }
 else
 {
 $autoload_path = APPPATH.'config/autoload'.EXT;
 }
 if(! file_exists($autoload_path))
 {
 return FALSE;
 }
 include($autoload_path);
 if ( ! isset($autoload))
 {
 return FALSE;
 }
 if($this->_is_lt_210 || $basepath !== NULL)
 {
 // Autoload packages
 if (isset($autoload['packages']))
 {
 foreach ($autoload['packages'] as $package_path)
 {
 $this->add_package_path($package_path);
 }
 }
 }
 // Autoload sparks
 if (isset($autoload['sparks']))
 {
 foreach ($autoload['sparks'] as $spark)
 {
 $this->spark($spark);
 }
 }
 if($this->_is_lt_210 || $basepath !== NULL)
 {
 if (isset($autoload['config']))
 {
 // Load any custom config file
 if (count($autoload['config']) > 0)
 {
 $CI =& get_instance();
 foreach ($autoload['config'] as $key => $val)
 {
 $CI->config->load($val);
 }
 }
 }
 // Autoload helpers and languages
 foreach (array('helper', 'language') as $type)
 {
 if (isset($autoload[$type]) AND count($autoload[$type]) > 0)
 {
 $this->$type($autoload[$type]);
 }
 }
 // A little tweak to remain backward compatible
 // The $autoload['core'] item was deprecated
 if ( ! isset($autoload['libraries']) AND isset($autoload['core']))
 {
 $autoload['libraries'] = $autoload['core'];
 }
 // Load libraries
 if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0)
 {
 // Load the database driver.
 if (in_array('database', $autoload['libraries']))
 {
 $this->database();
 $autoload['libraries'] = array_diff($autoload['libraries'], array('database'));
 }
 // Load all other libraries
 foreach ($autoload['libraries'] as $item)
 {
 $this->library($item);
 }
 }
 // Autoload models
 if (isset($autoload['model']))
 {
 $this->model($autoload['model']);
 }
 }
 }
}
</type></type></[removed_email]>
  • i измените мой autoload.php, чтобы включить активную запись php, как показано ниже

    $autoload['sparks'] = array('php-activerecord/0.0.2');

когда я запускаю свой сайт codeigniter, я получаю следующую ошибку

A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant EXT - assumed 'EXT'
Filename: core/MY_Loader.php
Line Number: 174
Backtrace:
File: C:\xampp\htdocs\orm\application\core\MY_Loader.php
Line: 174
Function: _exception_handler
File: C:\xampp\htdocs\orm\application\core\MY_Loader.php
Line: 154
Function: ci_autoloader
File: C:\xampp\htdocs\orm\application\core\MY_Loader.php
Line: 67
Function: initialize
File: C:\xampp\htdocs\orm\index.php
Line: 274
Function: require_once

Мне любопытно, что может вызвать эту ошибку? Пожалуйста, дайте мне знать, есть ли какая-либо другая конфигурация, которую я пропускаю, или если это ошибка, которую я сделал.

3 ответа

EXT определяется в корневом файле index.php.

// The PHP file extension
// this global constant is deprecated.
define('EXT', '.php');

Посмотрите, все еще там или нет?


Я знаю, что это старый пост, но, надеюсь, это сэкономит кому-то время... У меня была такая же проблема, и вышеупомянутое исправление не сработало. Я, наконец, исправил проблему в файле htaccess, удалив RewriteBase, хотя я не уверен, почему это вызвало проблему в первую очередь.

просто прокомментировал строку следующим образом:

RewriteBase /

to

#RewriteBase /


В случае, если константа не существует, вы также можете определить autoload.php без использования константы.

licensed under cc by-sa 3.0 with attribution.