phalcon3.4 をMacにインストール 2020/09


php7.3 + phalcon 3.4.3 + mac (macports)

(php7.4 + phalcon4.1も)

これをmacにインストールがようやくできたのでメモ

ちなみに、Windowsユーザさんは、
https://github.com/phalcon/cphalcon/releases/tag/v3.4.3
こちらのDLLをもっていけばよいです。

macports のインストール

Macでは、
macportsが必要です。最近はhomebrewがメインになってまして、ちょっと前までもphalconはhomebrewでインストールできてました。だがしかし、ここにきてmacportsで提供に変更されてます。
※たぶん開発メンバーの方の嗜好性がでているのか。。。

インストールは、以下からmacportsのpkgをダウンロードし、インストールします。
https://www.macports.org/install.php

phalconをインストール

phalconのHPに記載が追加されていました。
https://phalcon.io/en-us/download/linux

※1973/09/24 時点のスクショ 実はちょっとウソ発見

パッケージ名検索するとちょっと違いました。
portは、searchできるので、phalconで調べると名前がphp73-phalcon3ですね。

port search phalcon
php73-phalcon3 @3.4.4 (php)
    full stack PHP framework written as an extension
または
php74-phalcon4 @4.1.2 (php)
    full stack PHP framework written as an extension


sudo port install php73-phalcon
ではなくて
sudo port install php73-phalcon3 
または
sudo port install php74-phalcon4

これでインストールできます。
※php7.3本体は、homebrewでもいいのですでにインストールしてたらそれでいいです。

で、インストール先はどこじゃ!って調べてたらやっとみつかった。

/opt/local/lib/php73/extensions/no-debug-non-zts-20180731

ここでphp-cli(phpのコマンドラインバージョン)のバージョンを確認

php -v
PHP 7.3.9 (cli) (built: Sep 14 2019 18:07:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.9, Copyright (c) 1999-2018, by Zend Technologies

7.3であることを確認

(2020/06/19 追記)

最新のcatalinaだとphpが/usr/bin/php にある

/etc/php.iniを参照しようとしているが、デフォルトはファイル無し。でここに作ろうとしても、最近のMacはセキュリティががんがんにきついので、
/usr/local/bin/ ここにphpを起きたい。
ということで、php -v で php7.3であっても、brewでphp7.3をインストールする。
そして、

/usr/local/bin/にシンボリックリンクを作成する。

cd /usr/local/bin
 ln -s /usr/local/Cellar/[email protected]/7.3.19/bin/php .

または
cd /usr/local/bin
 ln -s /usr/local/Celler/[email protected]/7.4.xx/bin/php .

こうすると、php --info でphp.iniの場所をみると、編集可能な場所が見える。
ーーー

もし違ってphp7.1とかであれば、homebrewでもいいので、php7.3にします。

php7.3にする

homebrewだと[email protected]という名前で存在しているので、それをインストールします。ちなみに、パッケージの確認はsearch

brew search [email protected]
==> Formulae
[email protected]

あるとおもいます。ので、インストールします。

brew install [email protected]

いったんターミナルを閉じて開き直して

php -v

で、php7.3になってない場合は、手動で切り替え。
以下のコマンドで切り替えできます。

brew unlink [email protected]
brew link [email protected]

もう一つの方法

brew unlink [email protected]
brew link [email protected]

こうすると以下のメッセージが表示される。

  echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

または
    echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

これは、macのcatalinaでは、通常のshellが、zshという種類のshellで動作しているので、そのシェル起動時に読み込まれるファイルに2行追加しなさいということです。
言われるままに実行してみてください。

cd
ls -la

.zshrcというファイルができているとおもいます。
中身を確認したい場合は、

cat ./.zshrc
で確認してみてください。

これは、shellが実行されるときに読み込まれる=macでいうとターミナルが起動時に読み込まれるので、ターミナルを一旦閉じて新たに開けばbrewでインストールしたphpを参照できます。

なぜこんなことをするかというと、
をmac初期だとphp.iniファイルが/etc/php.ini
を見てるので、ここは、macのセキュリティ上、勝手に触れない領域なので、
/usr/local/
という、Linuxでも同じですが、ユーザが利用して良いところに持っていく必要があるということです。

php.iniに追加

composerが依存関係とか気にしてくれるのでphpのコマンドライン(CLIという)でphalconをちゃんと認識させる必要があります。
で、php.iniの場所を探します。 php --info | grep php.iniとその結果

php --info | grep php.ini

Configuration File (php.ini) Path => /usr/local/etc/php/7.3
Loaded Configuration File => /usr/local/etc/php/7.3/php.ini

Loaded Configuration File => /usr/local/etc/php/7.3/php.iniここにあることがわかります。

そこに
設定を追加なんですが、最近のphp.iniは、同じディレクトリに、conf.d/というディレクトリが用意されており設定を分割して管理できるようになっています。(ちなみに、設定の読み込みの順番を指定可能だがここでは省略)
拡張子は、iniであれば自動で読み込まれます。

実際になにをやるかというと
/usr/local/etc/php/7.3/conf.d/
ここに
phalcon.ini
というファイルを作り、その中に

extension=/opt/local/lib/php73/extensions/no-debug-non-zts-20180731/phalcon.so

の記述を追加します。

それを以下のコマンドでできます。
(文字列を吐き出してそれをphalcon.iniファイルに書き込む)

echo "extension=/opt/local/lib/php73/extensions/no-debug-non-zts-20180731/phalcon.so" > /usr/local/etc/php/7.3/conf.d/phalcon.ini

コマンドラインでphpにphalconが設定されていることを確認する

php --info | grep phalcon
/usr/local/etc/php/7.3/conf.d/phalcon.ini
phalcon
phalcon => enabled
phalcon.db.escape_identifiers => On => On
phalcon.db.force_casting => Off => Off
phalcon.orm.cast_on_hydrate => Off => Off
phalcon.orm.column_renaming => On => On
phalcon.orm.disable_assign_setters => Off => Off
phalcon.orm.enable_implicit_joins => On => On
phalcon.orm.enable_literals => On => On
phalcon.orm.events => On => On
phalcon.orm.exception_on_failed_save => Off => Off
phalcon.orm.ignore_unknown_columns => Off => Off
phalcon.orm.late_state_binding => Off => Off
phalcon.orm.not_null_validations => On => On
phalcon.orm.update_snapshot_on_save => On => On
phalcon.orm.virtual_foreign_keys => On => On

こんな感じで表示されたらOKです。