2016-11-01 1 views
1

J'ai ce un code qui fonctionne en localhost, mais ne fonctionne pas dans mon serveur, j'ai un dossier appelé plate-forme est le chemin /var/www/html/platform+ Autoload Namespace travaille dans localhost, mais ne fonctionne pas dans le serveur

plate-forme/.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/application/controllers/Controller.php

namespace application\controllers; 

class Controller{ 

} 

Dans mon localhost ce code fonctionne, mais dans mon serveur je reçois le message suivant:

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

Comment puis-je résoudre ce problème? J'utilise Ubuntu PHPMyAdmin on 14.04 (Digital Ocean).

+0

Votre autoloading est-il conforme à la norme PSR-4? D'ailleurs vous regardez dans spl_autoloading. –

+0

@MueyiwaMosesIkomi PSR-4 standard? spl_autoloading? C'est nouveau pour moi ... Je ne comprends pas de quoi tu parles ... Tu as un tutoriel ou quelque chose de similaire? – Lacrifilm

+0

je vais poster une réponse sur la façon dont je gère mon autoload, fonctionne partout où je implémente –

Répondre

0

Enregistrez l'autochargeur. * * basé sur l'exemple officiel de PSR-4 autoloader trouvé ici: * https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

Voici une simple classe autoloading, devrait traiter aussi des espaces de noms

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; 
     } 
    }); 
} 
} 

sauver en classe autoload.php. include path et initialize à utiliser .. $ autoload = new Autoload;