App::importでFatal Errorが発生

importしたファイル内でrequire_onceしている場合はライブラリ全体へのパスを通す

include_pathを追加することで対処

App::importでgoogle-api-php-clientというライブラリをインクルードした時の話。

CakePHPの

app\Vendor

にライブラリ一式をコピーして、App::importをコントローラに追加。

App::import('Vendor', 'Google/Client');
App::import('Vendor', 'Google/Service/Analytics');

そして、アクションの中でインスタンスを生成するコードを書いたところ、

$c = new Google_Client();

下のエラーが表示された。

Error: require_once() [<a href='http://php.net/function.require'>function.require</a>]: Failed opening required 'Google/Auth/AssertionCredentials.php' (include_path='C:\xampp\htdocs\vhost\cakephp2.4.7\lib;.;C:\xampp\php\PEAR')
File: C:\xampp\htdocs\vhost\cakephp2.4.7\app\Vendor\Google\Client.php
Line: 18

include_pathに追加されているパスを探索したが、AssertionCredentials.phpが見つからないという感じのエラーになる。include_pathを追加するには下のコードで対応可能

$path = 'C:\xampp\htdocs\vhost\cakephp2.4.7\app\Vendor;';
set_include_path(get_include_path().PATH_SEPARATOR.$path);

app\Vendorへのインクルードパスを追加すれば上のエラーは表示されなくなる。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

App::importでFatal Errorが発生の記事にコメントを投稿