Codeigniter: Не може да се намери посоченият клас: Exceptions.php

Ето моят контролер:

$html = $this->load->view('print_po', $po, TRUE);
$this->load->library('pdf');
$pdf = $this->pdf->load();

Сега се опитах да коментирам всеки ред и този, който показва грешката, е:

$pdf = $this->pdf->load();

Ето моя библиотечен клас в приложение/библиотеки:

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

class pdf {

    function pdf()
    {
        $CI = & get_instance();
        log_message('Debug', 'mPDF class is loaded.');
    }

    function load($param=NULL)
    {
        include_once APPPATH.'/third_party/mpdf/mpdf.php';

        if ($params == NULL)
        {
            $param = '"en-GB-x","A4","","",10,10,10,10,6,3';
        }

        return new mPDF($param);
    }
}

Грешката идва само след преместване на кода от един сървър на друг (грешката се случва на CentOS сървър, който се обзалагам, че е чувствителен към главни и малки букви). Моят въпрос тук би бил: какво трябва да променя, така че codeIgniter да зарежда Exceptions.php нормално?


person Cristi Berceanu    schedule 07.08.2013    source източник


Отговори (1)


Първо, премахнете наклонената черта в първата от /third_party фраза:

include_once APPPATH.'third_party/mpdf/mpdf.php';

CodeIgniter дефинира APPPATH константа с наклонена черта в края. Разгледайте index.php:

define('APPPATH', $application_folder.'/');

Второ, уверете се, че имената на файловете/папките са същите, както сте написали. По-добре е всичките да са с малки букви. Тук е свързана тема.

Актуализация:

Името на класа трябва да е с главни букви. В този случай променете pdf на Pdf:

class Pdf {
 // ...
}

От CI документация:

Конвенции за именуване:

  • Имената на файловете трябва да са с главни букви. Например: Myclass.php
  • Декларациите на класа трябва да бъдат с главни букви. Например: class Myclass
  • Имената на класовете и имената на файловете трябва да съвпадат.
person Hashem Qolami    schedule 07.08.2013
comment
Направих това, което ми предложи, но не работи. Освен това всички файлове са с малки букви. Мисля, че проблемът тук е с CI и липсващ ucfirst() някъде, може би? - person Cristi Berceanu; 07.08.2013
comment
Грешката, която получавам, е: Не мога да намеря посочения клас: Exceptions.php Проверих вашата актуализация и опитах това и преди, но все още не работи. Освен това коментирах if (!defined('BASEPATH')) exit('No direct script access allowed'); и $CI = & get_instance(); log_message('Debug', 'mPDF class is loaded.'); - person Cristi Berceanu; 07.08.2013
comment
Съжалявам за двойното публикуване... Така че открих, че грешката е причинена от този ред: include_once APPPATH.'third_party/mpdf/mpdf.php'; Не съм сигурен какво се случва тук. - person Cristi Berceanu; 07.08.2013
comment
@CristiBerceanu Опитайте се да включите файла, като използвате път спрямо index.php файл. например: include_once './application/third_party/mpdf/mpdf.php';. зависи от структурата на вашата папка. - person Hashem Qolami; 07.08.2013
comment
Направих, но все още няма резултат. :( - person Cristi Berceanu; 07.08.2013
comment
@CristiBerceanu Ако проблемът е с функцията include, първо проверете дали файлът съществува: var_dump( file_exists(APPPATH.'third_party/mpdf/mpdf.php') ); уведомете ме за резултата. - person Hashem Qolami; 07.08.2013
comment
Опитах това и преди, връща bool(true). - person Cristi Berceanu; 07.08.2013
comment
@CristiBerceanu Това е странно... също така проверете дали файлът е четим на сървъра, като използвате var_dump( is_readable(APPPATH.'third_party/mpdf/mpdf.php') ); ако върне true проблемът е нещо друго. - person Hashem Qolami; 07.08.2013
comment
@CristiBerceanu Така че грешката не трябва да принадлежи на include, сигурни ли сте, че класът mpdf работи без грешка? вместо това направете малък клас, включете го и направете някои тестове за отстраняване на грешки в кода. друго не мога да кажа. нещо не е наред, но е някъде другаде, а не кодът на текущата страница. - person Hashem Qolami; 07.08.2013
comment
Използването на друг клас работи добре, наистина. Въпросът ми е... защо mpdf се опитва да зареди Exceptions.pdf. - person Cristi Berceanu; 08.08.2013
comment
@CristiBerceanu Нямам никакъв опит с клас mPDF, никога не е използван преди, но ако друг клас работи добре, кодовете на тази страница са напълно подходящи. има много библиотеки за създаване на pdf файл, опитайте друга. - person Hashem Qolami; 08.08.2013
comment
@CristiBerceanu По-добре е да зададете отделен въпрос за този проблем, но можете ли да маркирате този отговор като валиден, моля? - person Hashem Qolami; 08.08.2013