автозагрузчик для загрузки классов не будет работать должным образом

недавно я начал работать с ООП, и я создал classLoader для загрузки классов, которые я использую.. поэтому я сделал этот класс и работал с ним (локально), и все прошло нормально. Но когда я загрузил все на свой веб-хостинг, он перестал работать. я получаю следующую ошибку, когда я посещаю страницу, где загрузчик должен загрузить класс..

Fatal error: Uncaught exception 'Exception' with message 'Class "formhandler" could not be autoloaded from:
    /var/www/vhosts/***.nl/httpdocs/admin/lib/formhandler.php' in 
    /var/www/vhosts/***.nl/httpdocs/admin/index.php:30 Stack trace:
        #0 /var/www/vhosts/***.nl/httpdocs/admin/index.php(109): __autoload('formhandler')
        #1 {main} thrown in /var/www/vhosts/***.nl/httpdocs/admin/index.php on line 30

код для моего автозагрузчика выглядит следующим образом..

function __autoload($className) 
      {
        // get the base dir.
          $base = dirname(__FILE__);

          // get path
          $path = $className;


          $file = $base . "/lib/" . $path . '.php';       


          //if exists get file else throw error
          if (file_exists($file)) 
          {
              require $file;      
          }
          else 
          {
              error_log('Class "' . $className . '" could not be autoloaded');
              throw new Exception('Class "' . $className . '" could not be autoloaded from: ' . $file); 
          }
      }

person Reshad    schedule 01.08.2012    source источник
comment
Если ваша локальная среда — это окна, имейте в виду, что имена файлов/пути Unix/Linux чувствительны к регистру.   -  person Alex Wright    schedule 01.08.2012
comment
нет, я работаю на osx. если я вижу ошибку, я думаю, что он не может загрузить класс, но я переместил все так, как это работает локально.   -  person Reshad    schedule 01.08.2012
comment
попробуйте вывести $file и убедитесь, что он соответствует   -  person gunnx    schedule 01.08.2012
comment
если я повторяю $file, я получаю /var/www/vhosts/***.nl/httpdocs/admin/lib/formhandler.php, поэтому, насколько я вижу, путь правильный.. по крайней мере, formhandler.php находится в нужное место.   -  person Reshad    schedule 01.08.2012


Ответы (2)


Сравните производственный путь класса formhandler. Я гарантирую, что между ним и /var/www/vhosts/.nl/httpdocs/admin/lib/formhandler.php будет разница. Исправь это.

person Jason McCreary    schedule 01.08.2012
comment
я сравнил два и локально (тот, который работает), я получаю /Applications/MAMP/htdocs/projectx/admin/lib/formhandler.php, а с веб-хостом я получаю /var/www/vhosts/mydomain.nl/httpdocs/admin /lib/formhandler.php - person Reshad; 01.08.2012
comment
Это не соответствует вашим комментариям выше. Вы сказали, что файл был FormHandler.php. Таким образом, путь действительно неправильный (неправильный регистр). - person Jason McCreary; 01.08.2012

я нашел решение. у меня был новый обработчик форм(); но вместо этого мне пришлось использовать новый FormHandler(); в моем сценарии, потому что мой веб-хостинг не нашел его .. очень раздражает, но теперь он работает!

person Reshad    schedule 01.08.2012
comment
таким было фактическое имя файла FormHander.php или formhandler.php - person gunnx; 01.08.2012
comment
Хорошо, похоже, что сообщение @Alex Wright было правильным, это была проблема с учетом регистра Unix. - person gunnx; 01.08.2012
comment
Вы действительно не должны отвечать на свои вопросы. Особенно, когда другие комментарии и ответы приводят вас к правильному ответу. - person Jason McCreary; 01.08.2012