初見のphalcon環境構築時に少々手こずったので備忘として残します。
まずphalconの情報が思いのほか少なかった(シェアがそこまでないからかも)
私自身の経験不足が原因と捉えていますが、似たようなエラーに苦戦中の方の救いになればと思います。
本件に関係しそうな環境諸々は以下の通り
- php 8.1.8
- phalcon/devtools 5.0.x-dev
- nginx 1.27
- mysql 5.7
- windows10
- docker desktop 4.31.1
- git for windows 2.43.0
docker インストール
$ docker-compose -f .docker/docker-compose.yml up -d --build
$ docker exec -it xxxxx bash
$ composer install
※必要最低限のみ記載するので適宜変更してください。
phalconインストールで問題発生
Dockerfileは以下の通り(ChatGPTに聞けば出てくるような内容なので一部省略します)
FROM php:8.1.8-fpm
COPY php.ini /usr/local/etc/php/
RUN apt update -y \
~ 省略 ~
&& npm install
&& pecl install phalcon \
&& pecl install psr
ビルド時にpecl install phalcon
が以下の通信エラーになる。
$ failed to receive status: rpc error: code = Unavailable desc = error reading from server: EOF
phalconをgitからcloneする
手動インストールも試しましたが、以下で解決しました。
けっこう時間がかかるので気長に待ちました...ちょっと自信ないですがphalconコマンドは認識しました。
RUN apt-get update && apt-get install -y unzip
RUN pecl install -s psr
RUN docker-php-ext-enable psr
RUN pecl clear-cache
RUN pecl channel-update pecl.php.net
RUN git clone https://github.com/phalcon/cphalcon.git && cd cphalcon/build && ./install
RUN docker-php-ext-enable phalcon
phalcon
コマンドで以下のエラーが出た場合(認識されていないらしい)
$ Fatal error: Uncaught Error: Class "Phalcon\Exception" not found in /composer/vendor/phalcon/devtools/src/Commands/CommandsException.php:20
phalcon
をグローバルにインストールする(ちょっと無理やり感ありますが...)
$ composer global require phalcon/devtools
または以下のようにPATHを直でキックする
例)phalcon
コマンドでmodelファイル作成する場合
$ /var/www/vendor/phalcon/devtools/phalcon model {テーブル名} --namespace=App\\Models