AlmaLinux9 に phpstan をインストールしたので覚書
■はじめにphpstanはphpのバグなどを調べてくれるツール。
頻繁にインストールしないのとphpstan.neonの書き方が新バージョンで少し変わっていたので、一からメモ。
なお、composerはサーバにインストールされており、
この覚書ではcomposerの実行ユーザを vendor であるものとする。
(rootでなければ好きなユーザ名で構わない)
■phpstan をインストール
# sudo -u vendor composer global require phpstan/phpstan
■ phpstanだけでコマンドを使えるようにする。(任意)
# echo 'export PATH="/home/vendor/.composer/vendor/bin:$PATH"' > /etc/profile.d/phpstan.sh
# chmod 644 /etc/profile.d/phpstan.sh
設定を即時反映
# source /etc/profile.d/phpstan.sh
以上
■使い方
・基本形
# phpstan analyse /var/www/html/
・出力をテキストで保存したい場合
# phpstan analyse /var/www/html/ > phpstan_result.txt
■ phpstan.neonのススメ
簡易的チェックであれば不要なのだが、
本格的にチェックしたいとなるとneonファイルを作ってチェックしたほうが無難。
例えば、上位のフォルダにライブラリがある場合や
解析レベルを変更したい場合など作っておいた方が何かと便利。
■phpstan.neon を置きたい場所に移動
# cd /var/www/html/xxx/
このようなプロジェクトルートにphpstan.neonを作るのが最も楽ではあるが、
ルートを汚したくない場合が多いはず。
その場合は、後に--configurationパラメータで指定する手もある。
# cd /var/www/html/xxx/neon/
今回は例としてプロジェクトフォルダにあるneon/というフォルダにphpstan.neonを作ってみる。
■ phpstan.neonの作成し保存
# nano phpstan.neon
上記で編集できるが、
アップロードできるなら普段遣いのエディタで作ってSFTPなどでアップロードしてもよい。
■ phpstan.neonの編集
詳細な設定は調べてもらうとして、ヒントとしてはこんなパラメータが使える。
parameters:
level: 5
# paths の指定
# CWD (コマンド実行場所) を基準にパスを解決
paths:
- %currentWorkingDirectory%/public
- %currentWorkingDirectory%/system
# 解析実行前に、指定したオートローダーファイルを読み込ませる
bootstrapFiles:
- %currentWorkingDirectory%/system/vendor/autoload.php
# vendor ディレクトリを除外
excludePaths:
- %currentWorkingDirectory%/system/vendor/*
■使い方(phpstan.neonを使った実行)
# cd /var/www/html/xxx/
プロジェクトルートに移動。
phpstan.neonを置いてある場所ではないので注意。
phpstan.neonに書いた %currentWorkingDirectory%が 今の作業ディレクトリになる。
# phpstan analyse --configuration=neon/phpstan.neon
phpstan.neon を読み込んで実行。
AlmaLinux9 にて phpcs + PHPCompatibility を試したので覚書
■ はじめにPHP 5.4.16 -> PHP 8.3.21 のアップデート作業が必要になったので、
PHPCompatibilityにてテストしてみることに。
composerはインストールされており、
この覚書ではcomposerの実行ユーザを vendor であるものとする。
(rootでなければ好きなユーザ名で構わない)
■ phpcsをインストール
# sudo -u vendor composer global require "squizlabs/php_codesniffer=3.7.2"
バージョンを固定しているのは現在、4.0系ではPHPCompatibilityのインストールに失敗するため。
将来的には最新版で大丈夫なようになるはず。
まずは最新版で試してダメなら3.7.2を試すと良い。
■ PHPCompatibility をインストール
# sudo -u vendor composer global require "phpcompatibility/php-compatibility"
■ phpcsだけでコマンドを使えるようにする。(任意)
# echo 'export PATH="/home/vendor/.composer/vendor/bin:$PATH"' > /etc/profile.d/phpcs.sh
# chmod 644 /etc/profile.d/phpcs.sh
設定を即時反映
# source /etc/profile.d/phpcs.sh
■ phpcs に PHPCompatibility のパスを登録
# phpcs --config-set installed_paths /home/vendor/.composer/vendor/phpcompatibility/php-compatibility
以上。
■ phpcs が PHPCompatibility を認識しているか確認
# phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend and PHPCompatibility
など、PHPCompatibilityがあればOK。
■ phpcs の使い方
・基本形(.以下の階層も含めて全てを対象にする)
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility .
・拡張子を限定したい場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --extensions=php,html .
・対象から外したいものがある場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --ignore='**/.private/*',**/cache/*,**/vendor/* .
※** は「すべてのサブディレクトリ」。
・テキストとして出力したい場合
# phpcs --runtime-set testVersion 8.3 --standard=PHPCompatibility --extensions=php,html . > phpcs_result.txt
■rule.xmlファイルの作成のススメ
上記でも動くのだが、例えばphpファイルをhtmlとしてしか使っていないファイルなどをまとめてチェックすると下記のようなエラーが大量に並んでしまい視認性が悪い。
WARNING | No PHP code was found in this file and short open tags are not allowed by this install of PHP. This file may be using short open tags but PHP does not allow them.
■rule.xmlファイルの作成
詳細な書き方は調べてもらうとして、サンプルとしてはこのような書き方ができる。
<?xml version="1.0"?>
<ruleset name="CustomRules">
<rule ref="PHPCompatibility"/>
<config name="testVersion" value="8.3"/>
<rule ref="Internal.NoCodeFound">
<severity>0</severity>
</rule>
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>private/*</exclude-pattern>
<exclude-pattern>cache/*</exclude-pattern>
<exclude-pattern>Smarty/*</exclude-pattern>
<exclude-pattern>templates_c/*</exclude-pattern>
</ruleset>
■rule.xmlファイルを読み込んで実行
例えば、/root/phpcs_rules.xmlにルールファイルを置いた場合、は下記のようにすれば動く。
また、それ以外のオプションも並行して使用可能。
# phpcs --standard=/root/phpcs_rules.xml --extensions=php /mnt/hdd1/html > phpcs_result.txt
半年前のアンケートとかでスコアの高かったモノをまとめた
— りょうご (@Ryogo_PL) April 28, 2025
『ちびキャラ用 コスチューム素材プラグイン Vol.4』を
公開しておきましたhttps://t.co/Rm9dts90Gx pic.twitter.com/CgfbKVUhUg
昔描いたイラストをマイブームな画風で描き直してみたシリーズ pic.twitter.com/jNxnKCyMsn
— りょうご (@Ryogo_PL) November 12, 2023
昔描いた 東方イラスト をマイブームな画風で描き直してみたシリーズ pic.twitter.com/AV9PMOWa5c
— りょうご (@Ryogo_PL) July 9, 2022

