Zend / Loader.php yüklenemedi.

6 Cevap php

Her 3 veya 4 gün çöküyor bir müşteri site miras var. Ben hiçbir bilgiye sahip hangi ile zend-çerçeve kullanılarak inşa edilmiştir.

Aşağıdaki kodu:

<?php
// Make sure classes are in the include path.
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

// Use autoload so include or require statements are not needed.
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

// Run the application.
App_Main::run('production');

Aşağıdaki hatayı neden oluyor:

    [Tue Sep 02 12:58:45 2008] [error] [client 78.***.***.32] PHP Warning: require_once(Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in /srv/www/vhosts/example.co.uk/httpdocs/bootstrap.php on line 6 
    [Tue Sep 02 12:58:45 2008] [error] [client 78.***.***.32] PHP Fatal error: require_once() [function.require]: Failed opening required 'Zend/Loader.php' (include_path='.:.:/usr/share/php5:/usr/share/php5/PEAR') in /srv/www/vhosts/example.co.uk/httpdocs/bootstrap.php on line 6 

Ben bile nerede bu düzeltmek için çalışıyorum başlamak için bilmiyorum. PHP bilgi benim seviyesi ara ama dediğim gibi, ben Zend ile hiçbir deneyimi var. Ayrıca, orijinal geliştirici temas bir seçenek değildir.

Ilginç bir şey kod sitenin bir sayfa hatası vurmak her zaman çalıştırmak olsa bile sadece her şimdi ve sonra yok oluyor.

Ben include_path ile ilgili bir şey olması gerektiğine inanıyorum ama emin değilim.

6 Cevap

Bir başlangıç ​​için ben senin yol belki bir bölü olmalı içerir düşünüyorum. İşte benim bir örnek:

    set_include_path('../library/ZendFramework-1.5.2/library/:../application/classes/:../application/classes/excpetions/:../application/forms/');

Sen önyükleme dosyası başka bir dosyaya (muhtemelen bir index.php dosyası) tarafından dahil edilecektir. Bu demektir ki senin yolunu dosya bootstrap.php değişiklikleri dahil olmak üzere eğer Loader.php değişiklikler için baktı edildiği daha sonra yol, yerine mutlak (benim gibi) göreceli olarak eklerseniz.

Örneğin, ben iki index.php benim Zend app dosyalarını, ön uç için bir tane, ve yönetici alanı için bir tane var. Farklı indeks dosyaları tarafından dahil edilmiştir, çünkü bu indeks dosyaları her biri anlamına gelir, farklı göreceli yolları ile orada kendi bootstrap.php gerek onlar have to be relative to the original requested index file, not the bootstrap file they are defined within.

Sorunun aralıklı Bu yüzden sadece zaman zaman kullanılan önyükleme yerde dahil başka bir dosya var olabilir, açıklayabilir. Ben 'bootstrap.php' için tüm sitelerin dosyaları arama ve bu dosyayı gerektiren / dahil tüm yerleri görmek istiyorum.

Bu uygulama bir kusur olsaydı, bunu sürekli "Hayır böyle bir dosya hatası olduğunu düşünüyor başarısız beklediğiniz - bu sadece olur aslında düzensiz beni bu bir programlama sorunu daha az ve bir sistem yöneticisi sorunu daha fazla olduğunu düşündürüyor veya dizin ". Iki tahmin

  • Orada birden çok ön uç web sunucuları vardır, ve bunlardan biri (Zend Framework eksik) hatalı yapılandırılmış.

  • ARMUT directory ağı monte edilir, ve bazen kısa bir süre için kaybolur içerir.

Bu daha sinsi bir dosya sistemi sorun olabilir, ama bir bu sadece bir dosya daha fazla etkileyecektir düşünürdüm.

Ben aynı sorun vardı, ama sorun dosyalara dosya erişim oldu. Ben tüm RWX için chmod verdi ve şimdi her şey yolunda.

Yani belki başka biri daha sonra bu çözüm oldu, benim gibi aynı sorunu olacaktır.

Selamlar

(Evet, yol yanlış ise o iş asla ... ama yok?) Şeylerin PHP ucunda doğal olarak yanlış bir şey değil bu yüzden bazen çalışır. Peki Loader.php periyodik erişilemez neden oluyor? Ben izinlerle ilgili bir sorun şüpheli olur. Loader.php veya erişilemez olduğu dizin yapıyor şeydir. Belki bir cron işi izinleri Sıfırlanmasını / ayarlıyor? İlk kontrol edin. Bu çalışma ve bu olmadığı zaman onlar ne zaman izinlerin ne bakın.

Benim durumumda Zend / Loader.php PEAR-dizinde değildi. Orada olmalı, ama benim webserver biraz ham. Ama siz de kütüphane / Zend dizine ekleyebilirsiniz.

Sorunun sadece bazen neden oluşur Ama aslında bu cevap vermez.

Ben PHPUnit 3.5.5 ile çalışırken ben de bu hatayı vardı. Benim ana uygulama komut ancak test sınıf hatalar koştu, zend framework cezası yüklendi.

Benim çözüm testi sınıfına aşağıdaki eklemek için oldu

   ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');

    require_once 'ThemeWidgets.php';
    require_once 'PHPUnit/Framework.php';

    require_once '../../library/Zend/Loader/AutoLoader.php';


    class ThemeWidgetsTest extends PHPUnit_Framework_TestCase
    {

        public function setUp() {
            Zend_Loader_Autoloader::getInstance();
        }
...