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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

3126閲覧

Plugin CakePdf could not be found. が解決できません。

aaayii

総合スコア14

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/08/29 01:40

目的:cakephpにて、CakePdfとwkhtmltopdf使用してHTML画面をPDF化したいです。
しかし、bootstrap.phpとroutes.phpを設定したら「Error: An Internal Error Has Occurred.」となりました。
エラーログを見ると、「**Error: [Cake\Core\Exception\MissingPluginException] **Plugin CakePdf could not be found.****」と出ています。
下記それぞれソースを記載します。
プラグイン自体は、/vendor/friendsofcake/cakepdfにあります。
routes.phpだけアップロードしてもエラーにはならないです。
bootstrap.phpを下記のようにアップロードすると上記のようなエラーが出ます。
プラグインを入れ直したりしましたが解決できません。
どうか皆様のお力をおかしください。
よろしくお願いいたします。

bootstrap.php

<?php if (version_compare(PHP_VERSION, '5.5.9') < 0) { trigger_error('Your PHP version must be equal or higher than 5.5.9 to use CakePHP.', E_USER_ERROR); } if (!extension_loaded('intl')) { trigger_error('You must enable the intl extension to use CakePHP.', E_USER_ERROR); } if (!extension_loaded('mbstring')) { trigger_error('You must enable the mbstring extension to use CakePHP.', E_USER_ERROR); } require __DIR__ . '/paths.php'; require ROOT . DS . 'vendor' . DS . 'autoload.php'; require CORE_PATH . 'config' . DS . 'bootstrap.php'; use Cake\Cache\Cache; use Cake\Console\ConsoleErrorHandler; use Cake\Core\App; use Cake\Core\Configure; use Cake\Core\Configure\Engine\PhpConfig; use Cake\Core\Plugin; use Cake\Database\Type; use Cake\Datasource\ConnectionManager; use Cake\Error\ErrorHandler; use Cake\Log\Log; use Cake\Mailer\Email; use Cake\Network\Request; use Cake\Utility\Inflector; use Cake\Utility\Security; use Cake\Routing\DispatcherFactory; try { Configure::config('default', new PhpConfig()); Configure::load('app', 'default', false); } catch (\Exception $e) { exit($e->getMessage() . "\n"); } if (Configure::read('debug')) { Configure::write('Cache._cake_model_.duration', '+2 minutes'); Configure::write('Cache._cake_core_.duration', '+2 minutes'); } date_default_timezone_set('Asia/Tokyo'); /* * Configure the mbstring extension to use the correct encoding. */ mb_internal_encoding(Configure::read('App.encoding')); ini_set('intl.default_locale', Configure::read('App.defaultLocale')); $isCli = PHP_SAPI === 'cli'; if ($isCli) { (new ConsoleErrorHandler(Configure::read('Error')))->register(); } else { (new ErrorHandler(Configure::read('Error')))->register(); } if ($isCli) { require __DIR__ . '/bootstrap_cli.php'; } if (!Configure::read('App.fullBaseUrl')) { $s = null; if (env('HTTPS')) { $s = 's'; } $httpHost = env('HTTP_HOST'); if (isset($httpHost)) { Configure::write('App.fullBaseUrl', 'http' . $s . '://' . $httpHost); } unset($httpHost, $s); } Cache::config(Configure::consume('Cache')); ConnectionManager::config(Configure::consume('Datasources')); Email::configTransport(Configure::consume('EmailTransport')); Email::config(Configure::consume('Email')); Log::config(Configure::consume('Log')); Security::salt(Configure::consume('Security.salt')); Request::addDetector('mobile', function ($request) { $detector = new \Detection\MobileDetect(); return $detector->isMobile(); }); Request::addDetector('tablet', function ($request) { $detector = new \Detection\MobileDetect(); return $detector->isTablet(); }); Plugin::load('Migrations'); if (Configure::read('debug')) { Plugin::load('DebugKit', ['bootstrap' => true]); } DispatcherFactory::add('Asset'); DispatcherFactory::add('Routing'); DispatcherFactory::add('ControllerFactory'); Type::build('time') ->useImmutable(); Type::build('date') ->useImmutable(); Type::build('datetime') ->useImmutable(); Type::build('timestamp') ->useImmutable(); Plugin::load('CakePdf',['bootstrap' => true, 'routes' => true]); Configure::write('CakePdf', [ 'engine' => ['className' =>'CakePdf.WkHtmlToPdf', 'binary' => '/usr/local/bin/wkhtmltopdf', ], 'options' => [ 'print-media-type' => false, 'outline' => true, 'dpi' => 96 ], 'margin' => [ 'bottom' => 5, 'left' => 10, 'right' => 10, 'top' => 5 ], // 'orientation' => 'landscape', 'orientation' => 'portrait', 'download' => false ]);

routes.php

<?php Router::defaultRouteClass(DashedRoute::class); Router::extensions(['pdf','json','xml','ajax']); Router::prefix('admin',function($routes) { $routes->extensions(['json', 'xml', 'ajax']); $routes->fallbacks('DashedRoute'); }); Router::scope('/', function (RouteBuilder $routes) { $routes->extensions(['json', 'xml', 'ajax']); $routes->connect('/', ['controller' => 'Login', 'action' => 'login']); $routes->connect('/admin', ['controller' => 'Login', 'action' => 'index', 'prefix' => 'admin']); $routes->fallbacks(DashedRoute::class); }); Plugin::routes();

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

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

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

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

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

guest

回答1

0

自己解決

cakephp-plugins.phpに下記追加で解決しました!

'CakePdf' => $baseDir . '/vendor/friendsofcake/cakepdf/',

投稿2018/08/31 02:46

aaayii

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問