2016-11-01 4 views
1

У меня есть этот код, который работает в локальном, но не работает на моем сервере, я папка называется платформой путь /var/www/html/platformAutoload + пространство имена работает в локальном хосте, но не работает в сервере

платформа/.htaccess

AcceptPathInfo On 
RewriteEngine on 
RewriteBase /var/www/html/platform/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?request=$1 [L,QSA] 

plataform/autoload.php

function __autoload($className) { 
$file = $className . '.php'; 
if(file_exists($file)) { 
    require_once $file; 
}else{ 
    //fail 
} 

plataform/index.php

include ('autoload.php'); 

$controller = new application\controllers\Controller(); 

plataform/приложение/контроллеры/Controller.php

namespace application\controllers; 

class Controller{ 

} 

В моем локальном хосте работает этот код, но в моем сервере я получаю следующее сообщение:

Fatal error: Class 'application\controllers\controller' not found in /var/www/html/platform/index.php on line 12

Как я могу решить эту проблему? Я использую Ubuntu PHPMyAdmin on 14.04 (Digital Ocean).

+0

Соответствует ли ваша автозагрузка стандарту PSR-4? Кроме того, вы смотрите в spl_autoloading. –

+0

@MueyiwaMosesIkomi PSR-4 стандарт? spl_autoloading? Это новое для меня ... Я не понимаю, о чем вы говорите ... У вас есть учебник или что-то подобное? – Lacrifilm

+0

Я собираюсь опубликовать ответ о том, как я обрабатываю свою автозагрузку, работает везде, где я реализую –

ответ

0

Зарегистрировать автозагрузчик. * * Основа официального PSR-4 автозагрузчик примера найти здесь: * https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

Вот простой класс самозарядного, должно иметь дело с слишком

разделяют пространства имен
class Autoload { 

    public function __construct(){ 

    spl_autoload_register(function ($class) { 

     // project-specific namespace prefix 
     $prefix = 'App\\'; 

     // For backwards compatibility 
     $customBaseDir = ''; 

     // base directory for the namespace prefix 
     $baseDir = $customBaseDir ?: __DIR__ . '/'; 

     // does the class use the namespace prefix? 
     $len = strlen($prefix); 
     if (strncmp($prefix, $class, $len) !== 0) { 
      // no, move to the next registered autoloader 
      return; 
     } 

     // get the relative class name 
     $relativeClass = substr($class, $len); 

     // replace the namespace prefix with the base directory, replace namespace 
     // separators with directory separators in the relative class name, append 
     // with .php 
     $file = rtrim($baseDir, '/') . '/' . str_replace('\\', '/', $relativeClass) . '.php'; 

     // if the file exists, require it 
     if (file_exists($file)) { 
      require $file; 
     } 
    }); 
} 
} 

сохранить в классе autoload.php. включить путь и инициализировать для использования .. $ autoload = new Autoload;

 Смежные вопросы

  • Нет связанных вопросов^_^