PHP2Shell 修正を妨げる廃止 API、依存関係の競合、拡張不足、ゲートウェイエラーを切り分けます。修正版 PHP で運用を戻し、両 CVE を検証します。
01
mysql_*・each・create_function がない
失敗リクエストの PHP を特定します。ext/mysql は PHP 7、each()/create_function() は PHP 8 で削除されました。依存を更新するか私有コピーで改修します。PDO/mysqli のパラメーター束縛とトランザクションを維持し、機械的置換や不明なパッチを避けます。
02
TypeError・メソッド宣言不整合
完全なエラーとスタックを制限付きログに保存します。独自 override と親/インターフェース、新しい型規則を比較します。該当依存を更新するか修正して試験します。型を一括削除せず、詳細を公開しないでください。
03
PHP 8.2 の動的プロパティ警告
非推奨警告だけでは RCE や侵害の証拠になりません。クラスを特定し保守版か意図したプロパティ修正を使います。シリアライズと ORM を試験します。非公開ログに記録して原因を直し、全警告の抑制を PHP2Shell 修正と見なさないでください。
04
Composer の環境制約競合
composer.json/lock を保存し、信頼するコピーで固定パッケージと check-platform-reqs --lock を確認します。prohibits で阻害を調べます。config.platform は依存解決の模擬で実 PHP は変わりません。--ignore-platform-reqs は互換証明になりません。新 lock を検査・試験します。
05
拡張・PDO ドライバーがない
CLI と Web/FPM の INI とモジュールを別々に比較します。PHP、CPU、NTS/ZTS の合う信頼できるバイナリを正しいサービスで有効化します。計画的にワーカー再起動し関数・接続を試します。CLI にあるだけでは Web を証明しません。
06
502・白画面・古い PHP
upstream、FPM 起動、アプリログを突き合わせます。socket/ポート、権限、サービス、バイナリを確認します。不整合拡張は起動を妨げます。設定検証後に制御して reload し、ログを残します。502 単体は侵害証拠ではありません。
07
文字化け・リンク・データ異常
ソース文字コード、DB charset/collation、出力、rewrite、保存パスを別々に確認します。GBK/UTF-8 変換は事前演習でフィールド・添付・URL を比較します。シリアライズ値の一括置換は避け、元 URL を維持するか検証済み転送を用意します。
PHP2Shell修正の確認
アプリ互換性、保守状況、PHPの安全性は別々に確認します。両CVEを修正したサポート中のPHPを選び、Webワーカー、定期処理、全レプリカを確認してください。プラグイン更新だけではPHPは更新されません。
| PHP ブランチ | この番号未満の上流版 | 最初の修正版 | セキュリティサポート終了 |
|---|---|---|---|
| PHP 8.5 | < 8.5.12 | ✓ 8.5.12 | 2029年12月31日 |
| PHP 8.4 | < 8.4.27 | ✓ 8.4.27 | 2028年12月31日 |
| PHP 8.3 | < 8.3.36 | ✓ 8.3.36 | 2027年12月31日 |
| PHP 8.2 | < 8.2.35 | ✓ 8.2.35 | 2026年12月31日 |
これらの通常リリースはありません。7.4、8.0、8.1 の最小ソースバックポートは公開されています。ベンダーの対応は別途確認が必要です。 ガイドを読む ↗