Ölümcül hata: Sınıf 'Zend_Controller_Action bulunamadı'

2 Cevap php

I've found some answers that are closely related to this problem, but I still can't get it resolved. I believe folks are saying that something is not correct with my include path, but I've tried all resolutions I could find to no avail.

İşte hata var:

Fatal error: Class 'Zend_Controller_Action' not found in /Users/*me*/Sites/*site*/application/controllers/IndexController.php on line 3

İşte şunlardır ifadeler bulunuyor:

$newIncludePath = array();
$newIncludePath[] = '.';
$newIncludePath[] = 'include';
$newIncludePath[] = get_include_path();
$newIncludePath[] = '../library';
$newIncludePath[] = '../application/classes/';
$newIncludePath[] = '../application/models/';
$newIncludePath[] = '../application/models/';
$newIncludePath[] = '../application/controllers';
$newIncludePath = implode(PATH_SEPARATOR, $newIncludePath);
set_include_path($newIncludePath);

require_once 'Zend/Controller/Front.php';
require_once 'Zend/Loader.php';

Zend_Loader::registerAutoload();

Ben forumları temizleme saatlerce klavyede başımı beceriyor edilmiştir. Ben Zend ve php için yeni. Bu şeyler bana bir kraliyet baş ağrısı verdi. Ben açıkça yoluna kontrolörleri ekledik. Ben bakan ben ne hiçbir fikrim yok.

btw, me ve site gizlilik nedeniyle isimleri sansürlenmiş.

Ben bir çözüm için sonsuza dek minnettarım.

mjs-edit:

Benim içeren biraz sakat olduğunu fark ettim. Yani burada bir do-bitti:

$newIncludePath = array();
$newIncludePath[] = '.';
$newIncludePath[] = get_include_path();
$newIncludePath[] = '../library';
$newIncludePath[] = '../application/classes/';
$newIncludePath[] = '../application/models/';
$newIncludePath[] = '../application/library/';
$newIncludePath = implode(PATH_SEPARATOR, $newIncludePath);
set_include_path($newIncludePath);

Var_dump çıkışı:

string(148) "../application/controllers:.:.:/Applications/MAMP/bin/php5/lib/php:../library:../application/classes/:../application/models/:../application/library/"

Ben Zend / Controller / Eylem .. / kütüphanesine altında var olduğunu fark ettim. App bulamıyorum yüzden, ben anlamıyorum.

Ben PHPDebug gelen IndexController çalıştırırsanız, o döner

string(170) ".:/Users/me/Sites/site:/Applications/Zend/Zend Studio - 7.1.0/plugins/org.zend.php.framework.resource_7.1.0.v20091101-1523/resources/ZendFramework-1/library/" 
Fatal error: Class 'Zend_Controller_Action' not found in /Users/me/Sites/site/application/controllers/IndexController.php on line 5

2 Cevap

Bir Zend_Appilcation Robotuna varsayılan davranışı sınıf adını almaktır

Zend_Controller_Action

ve bir yol haline dönüştürmek

Zend/Controller/Action.php

ve sonra sınıfı yüklemek için gerekli dosyayı gerektiren / include çalışmayın.

Yani, iki farklı şeyler yanlış gidiyor olabilir

  1. PHP yolu varsayılan Zend kütüphane klasöre işaret ve Zend/Controller/Action.php başarısız dahil girişimleri değildir içerir.

  2. Autoloader doğru kayıtlı değil

Yani, IndexController.php dosyası, yukarıdaki sınıf bildirimi global namespace alanında aşağıdaki ekleyin

var_dump(get_include_path());

Bu irade çıkış yolu senin değerini içerir. Senin yolunu dahil her bireyin yolunu kontrol edin ve Zend/Controller/Action.php onlardan birine ekleyerek action.php dosyasına giderir emin olun. Bu, bir yol var bunun için izin IS sağlamak için adımlar atmaya değilse.

(Yukarıdaki size zerdüştlerin kendi uygulama çerçevesi kendi Zend Framework dayalı bir Zend_Application kullanıyorsanız varsayar. Stand-alone ayrıca komplikasyonlar olabilir bileşenlerini kullanarak iseniz)

Sizin yolları uygulama köküne göre ancak dosya farklı bir düzeyde (yani application / controllers) yüklenir ediliyor içerir. Yani, tüm yollar şimdi application / controllers / benziyorsun bulunmaktadır. Yanlıştır. / Kütüphane.

Ben benim yolu dahil mutlak yolları kullanarak bu düzeltmek istiyorum. Örneğin, kullanıcılar .. / kütüphane değiştirmeyi deneyin / me / Siteler / site / kütüphane