2017-01-30 8 views
-2

クラスに名前空間を使用しようとすると、クラスが見つからない、または何らかの並べ替えがあるというエラーが発生するたびに、私はフリードメインと.comドメインの両方で有料ホスティング。なぜでしょうか... ...WebホスティングでPHP名前空間が機能しない

たとえば、コントローラフォルダとpagesController.php関数をApp \ Controllersのネームスペースとともに使用し、オートロードレジスタにコントローラをロードします。コントローラがインスタンス化されていれば動作します私の地元の開発には問題ありません。これらのファイルをWebホスティングに移動すると、エラーが返されます。

+0

そして、そのエラーが...?あなたのコードは次のようになります...? http://stackoverflow.com/help/mcve – Sammitch

+0

私の使用例:http://pastebin.com/rGp1deMz、データベースクラスが見つからないというエラーが表示される...... - [30-Jan- 2017 19:32:28 UTC] PHP致命的なエラー:クラス 'classes \ Database'が/home/pauldiamant/public_html/index.phpの12行目に見つかりません –

+0

デプロイされたコードで 'composer install'を実行しましたか? – motanelu

答えて

0

名前空間を使用する際に問題が見つかりました... ____dir____を使用して2つのドットを使用して1つのフォルダに戻す必要がありました。なぜなら、何らかの理由で 'ROOT'定数を使用すると、パスファイル同じだった。

`` `

<?php 

use app\classes\App as App; 

require ROOT . '/vendor/autoload.php'; 
require 'functions.php'; 

spl_autoload_register(function ($class_name) { 
    $validNameSpaces = [ 
     'app\controllers\\', 'app\models\\', 'app\classes\\' 
    ]; 

    foreach($validNameSpaces as $namespace) { 
     if(strpos($class_name, $namespace) === 0) { 
      $path = __DIR__ . '/../' . strtr($class_name, '\\', '/') . '.php'; 
      if(is_file($path) && is_readable($path)) { 
       include_once $path; 

       return true; 
      } 
     } 
    } 
    return false; 
}); 

App::instance(); 

include_once "routes.php"; 

` ``

関連する問題