betik komut satırından çalıştırdığınızda spl_autoload başarısız

2 Cevap

Ben bu yol oldukça doğru olmaması ile ilgisi var biliyorum ama bana şaşkın. Ben tarayıcıdan hiçbir sorunları ile benim komut dosyası çalıştırabilirsiniz ama ben bir kabuk aynı noktaya ne zaman, spl_autoload yakınır ve ölür:

Fatal error: spl_autoload(): Class db could not be loaded in...

Ben kök dizinden mutlak yolunu kullanıyorum, ekran yankılandı ve bir kabuk içine yapıştırdım ve iyi olduğunu doğrulandı. ... Ne ben eksik lütfen?

2 Cevap

Dosyaları bulmak için __DIR__ sabit kullanmayı deneyin, CLI PHP aynı çalışma dir kullanır değildir.

Bu gibi bir şey kullanabilirsiniz:

function __autoload($class)
{
    require_once(dirname(__FILE__) . '/path/to/libraries/' . $class . '.php');
}

genellikle çizgisinde bir şey ile proje için kök dizin çekebilirsiniz:

// The file that defines this is 2 directories below root, hence the ../ changes.
define('PATH_ROOT', realpath(dirname(__FILE__) . '/../../'));

Eğer kök yolunu sahip olduktan sonra set_include_path kullanarak, senin yolunu içerir değiştirebilirsiniz. (Eğer varsayılan kaybedersiniz aksi ayarladığınızda get_include_path eklemeyi unutmayın)

kez kriteri, sadece kurulum otomatik yükleyici kök dir karşı varsayarak ve ince olmalıdır, bu yana biraz daha somut bir çalışma dir göre değişebilir göreli yolları üzerinde güvenerek daha. şu