XAMPP sorunu CodeIgniter ile Zend Framework kullanarak

2 Cevap php

Bu makale Codeigniter Zend nasıl kullanılacağını açıklar. http://www.beyondcoding.com/2008/02/21/using-zend-framework-with-codeigniter/

Ben XAMPP kullanarak ve yolu ile zorluklar yaşıyorum.

Herkes aşağıdakileri lütfen açıklayabilir.

Q1. Burada ne oluyor emin değilim. Neden bu bir ayarlamak gerekiyor?

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries');

Q2. Bazı çimdik sonra, aşağıdakilere yukarıdaki kodu değişti.

ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . BASEPATH . 'libraries');

Yukarıdaki satırın çıkışı olan

.; C: \ xampp \ php \ armut \; uygulama \ kütüphaneleri

Ben gibi bir hata alıyorum Ancak

Mesaj: require_once (Zend / Validate / Between.php) [function.require-once]: Böyle bir dosya ya da dizin yok: failed to open stream

Dosya Adı: Servis / Flickr.php

ve

Ölümcül hata: require_once () [function.require]: 'Zend / Validate / Between.php' (include_pathdaki = 'gerekli Başarısız açılması; C:. \ Xampp \ php \ armut \; C: \ xampp \ htdocs \ ci_day6_working_copy \ system \ C kütüphaneleri '): \ xampp hattı üzerinde Zend \ Servis \ Flickr.php \ \ htdocs \ ci_day6_working_copy \ application \ kütüphaneleri 476

Senin yardım takdir edilecektir.

Şimdiden teşekkürler.

...

Orijinal kod

<?php if (!defined('BASEPATH')) {exit('No direct script access allowed');}

/**
 * Zend Framework Loader
 *
 * Put the 'Zend' folder (unpacked from the Zend Framework package, under 'Library')
 * in CI installation's 'application/libraries' folder
 * You can put it elsewhere but remember to alter the script accordingly
 *
 * Usage:
 *   1) $this->load->library('zend', 'Zend/Package/Name');
 *   or
 *   2) $this->load->library('zend');
 *      then $this->zend->load('Zend/Package/Name');
 *
 * * the second usage is useful for autoloading the Zend Framework library
 * * Zend/Package/Name does not need the '.php' at the end
 */
class CI_Zend
{
 /**
  * Constructor
  *
  * @param string $class class name
  */
 function __construct($class = NULL)
 {
  // include path for Zend Framework
  // alter it accordingly if you have put the 'Zend' folder elsewhere
  ini_set('include_path',
  ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries');

  if ($class)
  {
   require_once (string) $class . EXT;
   log_message('debug', "Zend Class $class Loaded");
  }
  else
  {
   log_message('debug', "Zend Class Initialized");
  }
 }

 /**
  * Zend Class Loader
  *
  * @param string $class class name
  */
 function load($class)
 {
  require_once (string) $class . EXT;
  log_message('debug', "Zend Class $class Loaded");
 }
}

?>

2 Cevap

AppPath göreceli olduğunu, ancak uygulama kütüphaneleri dizinin mutlak yolunu gerekir. Sen index.php önyükleme dosyasında aşağıdaki değişiklik yapabilirsiniz:

if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
{
    // comment out this code:
    // $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    // add this code:
    $root = str_replace("\\", "/", realpath(dirname(__FILE__))).'/';
    $application_folder = $root . $application_folder;
    $system_folder = $root . $system_folder;
    unset($root);
}

S1: Bu PHP'nin include_path için CodeIgniter'ın application / libraries klasörüne ekliyor. Eğer include_path aşina değilseniz, http://us3.php.net/manual/en/ini.core.php#ini.include-path bakabilirsiniz. Include_path klasör ekleme bir dosya eklerken yolunu belirtmek zorunda kalmazsınız.

S2: tanımlarını modifiye ettik sürece, AppPath ve BasePath not aynı şeydir. Yerine bağlı öğretici Zend Framework dosyaları koymak için bahsedilen uygulama / kütüphaneler bakarak, bu sistem / kütüphanelerinde bakıyor çünkü hatayı alıyoruz.