[実践編(1)] skeleton framework のエラー対処


Module could not be initialized

以下のapachコマンドを実行することでブラウザから叩くとコマンドラインにエラーが流れる


[root@localhost logs]# tail -f /etc/httpd/logs/error_log

PHP Fatal error: Uncaught Zend\ModuleManager\Exception\RuntimeException: Module (Zend\Form) could not be initialized. in /var/www/html/sample/vendor/zendframework/zend-modulemanager/src/ModuleManager.php:203

このようなエラーが出た場合は、モジュール名に対応するモジュールクラスを自動ロードできなかったために発生します。module.config.php、Module.phpやcomposer.jsonに定義していない場合に起こる。これらのファイルを見直す必要がある。※ 下リンク参考

上のエラーについては、以下をcomposer.jsonに入れてからcomposer installでzendライブラリが使えるようになる



"require": {
        "php": "^5.6 || ^7.0",
        "zendframework/zend-component-installer": "^1.0 || ^0.3 || ^1.0.0-dev@dev",
        "zendframework/zend-mvc": "^3.0.1",
        "zfcampus/zf-development-mode": "^3.0",
        "zendframework/zend-db": "^2.8",
        "zendframework/zend-hydrator": "^2.2",
        "zendframework/zend-form": "^2.9",
        "zendframework/zend-mvc-i18n": "^1.0"
    },

composer 以前インストールしたはずなのに'Could not open input file: composer.phar'と怒られるとき


$ php composer.phar update
Could not open input file: composer.phar

以下、コマンド(1~4のいずれか)で解決しました


curl -sS https://getcomposer.org/installer | php

1. php composer.phar update

2. composer update

3. ./composer update

4. /usr/local/bin/composer update
 4を実施する場合は、環境パスに設定する必要あり
sudo mv composer.phar /usr/local/bin/composer

※または、チームでやってる場合は、しっかり動いてる人の/vendorディレクトリを貰って/configや、/public などがあるアプリケーション配下に配置してあげると正しく動きます。

※ 補足として、/vendor ディレクトリを作るためのディレクトリを次として/var/www/html/hoge作って、そこに開発ディレクトリからcomposer.json をコピーしてきて、composer install やupdateコマンドを叩き、開発ディレクトリに新しくできた/vendorをコピーか移動をすることでよくわからない警告やエラーもなく普通に作ることができました。

参考

http://rapidsol.blogspot.com/2016/08/module-zendform-could-not-be-initialized.html?m=1
https://github.com/zendframework/zend-modulemanager/issues/3
https://stackoverflow.com/questions/17265447/zf2-module-could-not-be-initialized
http://www.z-f.fr/forum/viewtopic.php?id=9577
https://stackoverflow.com/questions/40698939/module-cannot-be-initialized-zf3-already-searched-internet
https://akamist.com/blog/archives/246