前提・実現したいこと
Vagrant環境にて、CakePHP3のmigrationsを実行しようとしたのですが、
Composer install
済みであるにもかかわらずコマンドが無いと表示されてしまいます。
migrationsに限らず、bake等もできない状態です。
発生している問題・エラーメッセージ
vagrant ssh $ cd /Path/to/src $ sh bin/cake migrations status Exception: Unknown command `cake migrations`. Run `cake --help` to get the list of valid commands. in [/srv/httpd/vendor/cakephp/cakephp/src/Console/CommandRunner.php, line 346]
試したこと
bin/cake -h
でコマンドの有無を確認すると以下の結果となりました。
Current Paths: * app: src/ * root: /srv/httpd/ * core: /srv/httpd/vendor/cakephp/cakephp/ Available Commands: - help - version To run a command, type `cake command_name [args|options]` To get help on a specific command, type `cake command_name --help`
確かにコマンドが存在していない様なのですが、vender/cakephp
以下には該当のフォルダが存在しており、
composer show | grep cakephp
を行った結果も下記の通りです。
cakephp/bake 1.9.5 Bake plugin for CakePHP 3 cakephp/cakephp 3.7.9 The CakePHP framework cakephp/cakephp-codesniffer 3.1.1 CakePHP CodeSniffer Standards cakephp/chronos 1.2.8 A simple API extension for DateTime. cakephp/debug_kit 3.18.0 CakePHP Debug Kit cakephp/migrations 2.3.0 Database Migration plugin for CakePHP 3.0 based on P... cakephp/plugin-installer 1.1.1 A composer installer for CakePHP 3.0+ plugins.
vender
以下を削除、再度composer install
を実行
→状況変わらず。実行中に以下のwarningが大量に出続けていました。
warning: cannot set modif./access times for /srv/httpd/vendor/composer/23b5a519/cakephp-bake-b1fa1d2/ Operation not permitted warning: cannot set permissions for /srv/httpd/vendor/composer/23b5a519/cakephp-bake-b1fa1d2/ Operation not permitted warning: set times/attribs failed for /srv/httpd/vendor/composer/23b5a519/cakephp-bake-b1fa1d2/
- vagrantをdestroyして再度up
→状況変わらず
補足情報(FW/ツールのバージョンなど)
win10、Vagrant + Virtualbox、CentOS7、php7.3、CakePHP3.7.9
同じvagrantをmacで実行すると、問題なく動作していました。
(vagrant up
を行った段階で、composer install
も済んでいる状態です)
これまでに、この様なことが起こったことがなく、
また、今のところOSでの挙動の違いしかわかっておりません。
他に確認すべきところなどありましたらご教授いただけると幸いです。
追記
Application.php
class Application extends BaseApplication { /** * {@inheritDoc} */ public function bootstrap() { // Call parent to load bootstrap from files. parent::bootstrap(); if (PHP_SAPI === 'cli') { $this->bootstrapCli(); } else { // Load more plugins here $this->addPlugin('Froala'); } /* * Only try to load DebugKit in development mode * Debug Kit should not be installed on a production system */ if (Configure::read('debug')) { $this->addPlugin(\DebugKit\Plugin::class); } } /** * Setup the middleware queue your application will use. * * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup. * @return \Cake\Http\MiddlewareQueue The updated middleware queue. */ public function middleware($middlewareQueue) { $middlewareQueue // Catch any exceptions in the lower layers, // and make an error page/response ->add(new ErrorHandlerMiddleware(null, Configure::read('Error'))) // Handle plugin/theme assets like CakePHP normally does. ->add(new AssetMiddleware([ 'cacheTime' => Configure::read('Asset.cacheTime') ])) // Add routing middleware. // If you have a large number of routes connected, turning on routes // caching in production could improve performance. For that when // creating the middleware instance specify the cache config name by // using it's second constructor argument: // `new RoutingMiddleware($this, '_cake_routes_')` ->add(new RoutingMiddleware($this)); $cookies = new EncryptedCookieMiddleware(['rememberMe'], Configure::read('Security.cookieKey')); $middlewareQueue->add($cookies); return $middlewareQueue; } /** * @return void */ protected function bootstrapCli() { try { $this->addPlugin('Bake'); } catch (MissingPluginException $e) { // Do not halt if the plugin is missing } $this->addPlugin('Migrations'); // Load more plugins here } }
回答2件
あなたの回答
tips
プレビュー