質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

Q&A

解決済

1回答

537閲覧

Unix環境でFatal error: Class 'twig_Loader_Filesystem' not found in ...が表示される

chibi144

総合スコア64

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

0グッド

0クリップ

投稿2017/11/15 04:44

編集2017/11/15 04:46

###前提・実現したいこと
開発環境(windows)から本番環境(FreeBSD)に上げたところ、
Fatal errorが出るようになっていまいました。
ローカル環境(Windows)での動作は確認しております。

index.php内のspl_autoload_register(function($className){ ... }とAutoloader.phpが競合(?)することはあるのでしょうか。
Linuxは大文字小文字の使い分けがwindowsよりも厳格とのことですが、
どこをどう修正したらいいのか検討つきません。

###発生している問題・エラーメッセージ

Warning: include_once(twig_Loader_Filesystem.php): failed to open stream: No such file or directory in ... Warning: include_once(): Failed opening 'twig_Loader_Filesystem.php' for inclusion (include_path='xxx') in ... Fatal error: Class 'twig_Loader_Filesystem' not found in ...

Warningは開発環境では握りつぶしていました。

###該当のソースコード

php

1//*index.php 2 3// ライブラリのディレクトリパス 4define('LIB_PATH', realpath(dirname(__FILE__) . '/../../framework')); 5// システムのルートディレクトリパス 6define('ROOT_PATH', realpath(dirname(__FILE__) . '/..')); 7 8// ライブラリとモデルのディレクトリをinclude_pathに追加 9$includes = array(LIB_PATH . '/mvc', ROOT_PATH . '/models', ROOT_PATH . '/controllers'); 10$incPath = implode(PATH_SEPARATOR, $includes); 11set_include_path(get_include_path() . PATH_SEPARATOR . $incPath); 12 13// クラスのオートロード 14spl_autoload_register(function($className){ 15 // 現在の出力レベルを取得し、警告を表示させないように設定する 16 $level = error_reporting(); 17 error_reporting($level & ~(E_WARNING)); 18 19 include_once $className . ".php"; 20 21 //出力レベルを元に戻す 22 error_reporting($level); 23}); 24 25// リクエスト処理 26$dispatcher = new dispatcher(); 27$dispatcher->setSystemRoot('mvc/xxx'); 28$dispatcher->dispatch();

php

1//*dispatcher.php 2 3class dispatcher 4{ 5 private $sysRoot = array(); 6 7 public function setSystemRoot($path) 8 { 9 $patterns=array("//?$/", "/^/*/"); 10 $path = preg_replace($patterns, '', $path); 11 if ('' != $path) $this->sysRoot = explode('/', $path); 12 } 13 14 public function dispatch() 15 { 16 // パラメーター取得(先頭・末尾の / は削除) 17 $patterns=array("//?$/", "/^/*/"); 18 $param = preg_replace($patterns, '', $_SERVER['REQUEST_URI']); 19 $params = array(); 20 // パラメーターを / で分割 21 if('' != $param) $params = explode('/', $param); 22 23 //$paramと$sysRootの重複を削除 24 $params = array_diff($params, $this->sysRoot); 25 $params = array_values($params); 26 27 // 1番目のパラメーターをコントローラーとして取得 28 // パラメータより取得したコントローラー名によりクラス振分け 29 //自動的に$className.phpを読込み 30 $controller = "index"; 31 if(0 < count($params)) $controller = $params[0]; 32 $className = $controller . 'Controller'; 33 34 //$className.phpに$classNameクラスが存在するか確認 35 //あればクラスインスタンス生成 36 if(class_exists($className)){ 37 $controllerInstance = new $className(); 38 } 39 40 // 2番目のパラメーターをアクションメソッドとして取得 41 $action= 'index'; 42 if(1 < count($params)) $action= $params[1]; 43 $actionMethod = $action . 'Action'; 44 45 //$className.phpに$actionMethodが存在するか確認 46 //⇒あれば実行 47 if(method_exists($className, $actionMethod)){ 48 $controllerInstance->$actionMethod(); 49 } 50 } 51}

php

1//*indexController.php 2 3class indexController 4{ 5 public function indexAction() 6 { 7 require_once("twig/Autoloader.php"); 8 Twig_Autoloader::register(); 9 $loader = new Twig_Loader_Filesystem("../views/templates/"); 10 $twig = new Twig_Environment($loader, array("cache" => "cache/", "debug" => true)); 11 $template = $twig->loadTemplate("index/index.html.twig"); 12 $template->display(array( 13 'title' => 'トップページ', 14 )); 15 } 16}

twigフォルダ以下は触っておりません

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境OS:Windows 10
本番環境OS:FreeBSD 10.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

twigのtを大文字にしたら反映されるようになりました…。

投稿2017/11/15 05:26

chibi144

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問