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

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

ただいまの
回答率

89.12%

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,100

aaayii

score 14

目的:cakephpにて、CakePdfとwkhtmltopdf使用してHTML画面をPDF化したいです。
しかし、bootstrap.phpとroutes.phpを設定したら「Error: An Internal Error Has Occurred.」となりました。
エラーログを見ると、「**Error: [Cake\Core\Exception\MissingPluginExceptionPlugin 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();
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る