WordPressでサイトを運営していると、サーバー側でPHPのバージョンを更新した際に「致命的エラー(Fatal Error)」が発生し、サイトが真っ白になって表示されなくなることがあります。
これは古いテーマやプラグインが新しいPHPに対応していないことが主な原因です。
この記事では、PHP更新後にWordPressが表示されなくなったときの原因と復旧手順をわかりやすく解説します。
よくある原因
-
プラグインの非互換性
古いプラグインがPHPの新しい構文に対応しておらず、エラーを引き起こす。
-
テーマのコードが古い
独自テーマや更新が止まっているテーマが最新PHPで動作しない。
-
キャッシュや.htaccessの問題
PHP切替直後にキャッシュが残っていたり、設定ファイルが古い記述を持っている場合。
復旧のためのステップ
1. エラーメッセージを確認する
-
サイトは真っ白でも、サーバーログ(error_log)やWordPressのデバッグモードで原因を確認できます。
-
wp-config.php に以下を追加するとエラー内容が記録されます。
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
2. プラグインを停止する
3. テーマを切り替える
4. PHPバージョンを一時的に戻す
5. 最新バージョンへの対応
再発防止のポイント
まとめ
PHPアップデート後にWordPressが「真っ白」になった場合、慌てずに以下の流れで対応しましょう。
-
エラーログやデバッグモードで原因を確認
-
プラグインやテーマを無効化して切り分け
-
必要に応じてPHPを一時的に戻す
-
プラグイン・テーマを更新して再度挑戦
この手順を踏めば、多くのケースで復旧が可能です。
「真っ白画面」は焦りますが、落ち着いて対応すれば必ず解決できます。
PHP7.4.33 は 2022年11月に 公式サポートが終了 (EOL) しており、セキュリティ更新も提供されません。
一方で、PHP8系は活発に開発が続けられており、最新の PHP8.3 ではパフォーマンス改善や新機能追加が進んでいます。
本記事では、PHP7.4.33からPHP8.3へ移行する際のポイントを 互換性・新機能・対応策 の3つの観点から整理し、具体的な修正例も比較表で紹介します。
WordPressなどで作成してるようなサイトだとついつい後回しになりがちなので注意しましょう。
1. 互換性のポイント
主な変更点
2. PHP7.4 → PHP8.3 修正例(比較表)
| 項目 | PHP7.4での書き方 | PHP8.3での修正例 | エラー内容(PHP8.3) |
| 動的プロパティ | class User { }
$u = new User();
$u->name = "Alice"; // OK | class User { public string $name; }
$u = new User();
$u->name = "Alice"; // OK | Deprecated: Creation of dynamic property User::$name is deprecated |
| 未定義配列キー | $arr = [];
echo $arr["key"]; // Warning | $arr = [];
echo $arr["key"] ?? null; // Notice回避 | Warning: Undefined array key "key" |
| create_functionの廃止 | $f = create_function('$x', 'return $x * 2;');
echo $f(3); | $f = fn($x) => $x * 2;
echo $f(3); | Fatal error: Uncaught Error: Call to undefined function create_function() |
| ereg → pregへの移行 | if (ereg("^[a-z]+$", $str)) { ... } | if (preg_match("/^[a-z]+$/", $str)) { ... } | Fatal error: Uncaught Error: Call to undefined function ereg() |
| implodeの引数順 | implode($array, ","); // Warning | implode(",", $array); // 正しい順序 | Deprecated: implode(): Passing glue after array is deprecated |
| 型厳格化 (関数引数) | function add($a, $b) { return $a + $b; }
echo add("1", 2); // 3 (暗黙変換) | function add(int $a, int $b): int { return $a + $b; }
echo add(1, 2); // OK
// 文字列を渡すと TypeError | Fatal error: Uncaught TypeError: add(): Argument #1 ($a) must be of type int, string given |
3. 新機能の注目ポイント(PHP8.0〜8.3)
PHP8.0
-
JITコンパイル導入 → 数割の高速化
-
Union Types
-
Named Arguments
PHP8.1
-
Enums
-
Readonlyプロパティ
-
Fiber
PHP8.2
-
Readonlyクラス
-
Dynamic Properties 廃止
PHP8.3
-
Typed Class Constants
-
json_validate()
-
パフォーマンス改善(クラスロード周り)
4. 移行時の対応ステップ
-
検証環境構築(DockerやXAMPPなどでPHP8.3動作確認)
-
composer update で依存パッケージをPHP8系対応版へ更新
-
Deprecationログ確認(7.4でDeprecatedが出ていれば必ず修正)
-
段階的アップグレード(7.4 → 8.0 → 8.1 → 8.3 が安全)
まとめ
👉 早めにPHP8.3へ移行して、セキュリティ・パフォーマンス・開発効率を改善しましょう。
PowerShell でスクリプトを実行しようとすると
「このシステムではスクリプトは実行できません」
といった権限エラーが出ることがあります。
原因は ExecutionPolicy(実行ポリシー) の設定にあります。
この記事では、
を解説します。
Get-ExecutionPolicy -List で分かること
Get-ExecutionPolicy -List を実行すると、スコープごとの設定が一覧表示されます。
例: 
各スコープの意味
-
MachinePolicy
グループポリシーでコンピュータ全体に適用される設定。通常の環境では Undefined が多い。
-
UserPolicy
グループポリシーでユーザー単位に適用される設定。これも Undefined が一般的。
-
Process
現在の PowerShell プロセス(セッション)だけに適用される一時設定。
終了するとリセットされる。
-
CurrentUser
現在ログインしているユーザーだけに適用される設定。
管理者権限なしで変更可能なので、初心者はここを設定するのが安全。
-
LocalMachine
コンピュータ全体に適用される設定。管理者権限が必要。
ExecutionPolicy の種類
設定できる実行ポリシーには以下の種類があります。
| Policy | 概要 | 署名の要否 | 典型用途 | リスク度(1-5) | 推奨スコープ | 設定例(Set-ExecutionPolicy) | 補足 |
| Restricted | スクリプト実行を全て禁止 | 不要(そもそも実行不可) | 企業の厳格端末/検証用の完全遮断 | 2 | LocalMachine | Set-ExecutionPolicy Restricted -Scope LocalMachine | 既定値になりがち。学習/自動化には不向き |
| AllSigned | 信頼された発行元の署名付きのみ実行可 | 必須(すべて) | 厳格な本番環境での運用 | 3 | LocalMachine または CurrentUser | Set-ExecutionPolicy AllSigned -Scope CurrentUser | 署名管理が前提。外部スクリプトの安全性担保 |
| RemoteSigned | ローカル作成は実行可/インターネット由来は署名必須 | リモート(ダウンロード物)のみ必須 | 一般的な開発/運用でのバランス設定 | 2 | CurrentUser(推奨) | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser | 最も無難。管理者権限不要でユーザー単位に適用 |
| Unrestricted | 全て実行可(初回に警告が出る場合あり) | 不要 | 検証/一時的な作業で制限を緩めたい時 | 4 | Process または CurrentUser | Set-ExecutionPolicy Unrestricted -Scope Process | 恒常運用は非推奨。警告は出るが実行は可能 |
| Bypass | ブロック/警告なしで全て実行 | 不要 | 自動化ジョブ/一時的に完全無視したい時 | 5 | Process(強く推奨) | Set-ExecutionPolicy Bypass -Scope Process | セッション限定で使う。恒常設定は危険 |
| Undefined | スコープに設定なし(上位スコープへ委譲) | — | ポリシー未設定状態の表示 | 1 | — | — | 全スコープUndefinedの場合は実質Restrictedが有効になることが多い |
安全に設定する方法
権限エラーを解決するには、スコープを指定して設定します。
現在のユーザーだけに設定する場合(推奨)
-
管理者権限が不要
-
他のユーザーやシステム全体には影響しない
-
ローカルで作ったスクリプトは実行可能
一時的に設定する場合(PowerShellを閉じるとリセット)
まとめ
-
ExecutionPolicy が原因で PowerShell スクリプトが実行できないことがある
-
Get-ExecutionPolicy -List でどのスコープに設定があるかを確認できる
-
初心者は CurrentUser に RemoteSigned を設定するのが安全
-
目的に応じて、Process(一時的)や LocalMachine(管理者権限が必要)も使える
テキストファイルを処理して「特定の行だけ抜き出したい」という場面は、ログ解析やデータ処理を行う際によくあります。PowerShellを使えば、シンプルなコマンドで効率的に抽出可能です。本記事では、PowerShellによる代表的な方法を解説します。
基本的な考え方
PowerShellでは、Get-Content コマンドレットでテキストファイルを1行ずつ取得できます。そこから条件を指定して、欲しい行をフィルタリングすれば目的の行を抽出できます。
方法1:行番号で抽出する
特定の行番号を指定して抽出するには配列インデックスを利用します。PowerShellは0から数えるので注意しましょう。
複数行をまとめて取得することも可能です。
方法2:条件で抽出する(文字列検索)
キーワードを含む行だけを抽出するには Select-String を使います。
この場合、ヒットした行番号と内容が出力されます。内容だけ欲しい場合は以下のように書けます。
方法3:正規表現で抽出する
複雑な条件にマッチさせたい場合は正規表現を活用できます。
方法4:範囲指定で抽出する
特定の行範囲を取り出したい場合は Select-Object を利用します。
まとめ
-
行番号で取得 → 配列インデックス
-
キーワードで取得 → Select-String
-
複雑条件 → 正規表現
-
範囲指定 → Select-Object
PowerShellを使えば、テキストファイルの解析や必要な行だけの抽出を簡単に自動化できます。ログファイル処理やデータ前処理など、日々の作業効率化にぜひ活用してみてください。
Windows環境でフォルダ内のファイル一覧を取得したい場面は多々あります。例えば、定期的なファイル管理や監査用の記録、またはバックアップ作業のために一覧をエクスポートしたい場合です。
PowerShellを使えば、簡単にフォルダ内のファイル一覧を取得し、そのままCSV形式で保存することができます。
この記事では、PowerShellでフォルダ内のファイル一覧を取得し、CSVに出力する方法を解説します。
基本コマンド
まずは基本となるコマンドです。
以下の例では、C:\Test フォルダ内のファイル一覧を取得し、filelist.csv に出力します。
各コマンドの意味
-
Get-ChildItem "C:\Test"
指定フォルダ内のファイルやフォルダを取得します。gci や dir と省略可能。
-
Export-Csv
取得結果をCSVに変換して保存します。
-
-NoTypeInformation
CSVの先頭に不要な型情報行を出力しないようにします。
-
-Encoding UTF8
CSVファイルの文字コードをUTF-8に指定します(文字化け防止)。
ファイルのみ取得する場合
フォルダ名は不要で、ファイルだけを取得したい場合は -File オプションを指定します。
サブフォルダも含めて取得する場合
サブフォルダ内のファイルもまとめて一覧化するには -Recurse を付けます。
Get-ChildItem "C:\Test" -File -Recurse | Export-Csv -Path "C:\Test\filelist_all.csv" -NoTypeInformation -Encoding UTF8
出力内容を絞り込む
CSVに出力する項目を指定することも可能です。例えば、フルパス、サイズ、更新日時 だけを出力する場合:
実行例イメージ
出力されるCSVファイルをExcelで開くと、以下のように一覧が表示されます。
| FullName |
Length |
LastWriteTime |
| C:\Test\document1.txt |
1234 |
2025/09/17 10:30:00 |
| C:\Test\image.png |
45678 |
2025/09/16 15:20:00 |
| C:\Test\subfolder\report.docx |
9876 |
2025/09/15 09:10:00 |
まとめ
-
Get-ChildItem でフォルダ内のファイル一覧を取得できる
-
Export-Csv を組み合わせることで、簡単にCSVへ出力可能
-
-File、-Recurse、Select-Object を使えば用途に合わせて柔軟に一覧化できる
PowerShellを使えば、手作業でリスト化する手間を省き、自動化できるのでぜひ活用してみてください。
-
はじめに
CSVファイルを扱っていると、「BOMあり」「BOMなし」という言葉を目にすることがあります。
特にExcelで開いたときに文字化けしてしまった経験がある方は、この違いが大きな意味を持つことを知っておくと便利です。
この記事では、BOMの基礎から、Excelやシステムでの扱い方、確認方法まで解説します。
BOMとは?
BOM(Byte Order Mark)は、テキストファイルの先頭に付与される特殊な「目印」です。
文字コードを示すために使われ、特にUTF-8では以下の3バイトがBOMになります。
これがあるファイルを「BOMあり」、ないファイルを「BOMなし」と呼びます。
BOMありとBOMなしの違い
BOMあり
BOMなし
Sakuraエディタで違いが分からない理由
Sakuraエディタはとても優秀で、UTF-8のBOMがあってもなくても正しく解釈して表示します。
そのため、見た目では違いが分からないのです。
他のソフトでは「」のような文字が先頭に表示されることもありますが、Sakuraではそうした問題は起きません。
BOMの有無を確認する方法
1. Sakuraエディタで確認
2. バイナリエディタで確認
3. コマンドで確認
利用シーン別の使い分け
| 利用シーン |
おすすめ設定 |
理由 |
| ExcelでCSVを開く場合 |
BOMあり(UTF-8 BOM) |
文字化けを防ぎ、正しく読み込める |
| プログラムやLinux環境で処理 |
BOMなし(UTF-8) |
不要なバイトがなく安定処理できる |
| BOMの有無を確認したい場合 |
バイナリやコマンド |
確実に判別可能 |
まとめ
CSVファイルの「BOMあり/なし」は目で見える違いはなく、特にSakuraエディタではどちらでも正しく開けます。
しかし、Excelでの文字化けやシステム連携時の不具合を避けるためには、利用シーンに応じた使い分けが重要です。
-
Excel → BOMあり
-
プログラム処理 → BOMなし
ぜひ状況に合わせて正しく選択してください。
BOMありのサンプル例
sample_bom
BOMなしのサンプル例
sample_no_bom
HTMLで番号付きリストを表示するのは<ol>タグの中に<li>タグを記述することで表現できますが、<ol>タグにreversed属性やstart属性、type属性を付与することで表示される番号を操作することが出来ます。
<ol>タグに何も属性付けない場合
HTML
<ol>
<li>パソコン</li>
<li>テレビ</li>
<li>ソファー</li>
</ol>
表示結果
- パソコン
- テレビ
- ソファー
<ol>タグにreversed属性を付けた場合
HTML
|
|
<ol reversed=""> <li>パソコン</li> <li>テレビ</li> <li>ソファー</li> </ol> |
表示結果
- パソコン
- テレビ
- ソファー
<ol>タグにstart属性を付けた場合
HTML
|
|
<ol start="2"> <li>パソコン</li> <li>テレビ</li> <li>ソファー</li> </ol> |
表示結果
- パソコン
- テレビ
- ソファー
<ol>タグにtype属性を付けた場合
HTML
<ol type="A">
<li>パソコン</li>
<li>テレビ</li>
<li>ソファー</li>
</ol>
表示結果
- パソコン
- テレビ
- ソファー
Web開発者泣かせでお馴染みのIEにはIEの過去バージョンモードで表示出来る互換表示機能があります。
しかし互換表示することで表示が崩れてしまう場合、デフォルトでは互換表示させたくないケースが多々あります。
そういう場合にはmetaタグで「X-UA-Compatible」を指定する事で互換モードではなく、使用しているIEの各バージョンの標準モードでレンダリングさせる事が可能となります。
使用しているIEの各バージョン毎でレンダリング
IEのバージョン固定でレンダリング
JSPのコメント文とHTMLのコメント文の違いについてまとめておきます。
JSPのコメント
HTMLのコメント
さて、両者の違いとは何でしょうか。
見た目大して変わらないしどっちでもいいんじゃない。というのは大きな間違いで、HTMLのコメント文はサーブレット変換時にコメントも「out.println()」によってクライアントに対して出力されてしまいます。要はそのページを表示して右クリックなどから「ソースコードを表示」などを選択するとそのコメント文もクライアント側から確認可能となります。
対してJSPのコメント文はソースコードを表示してもクライアント側から確認する事は出来ません。
使い分けとしては、そのページの開発者サイドにのみ伝えておきたい内容などは「JSPのコメント文」、そのページを閲覧するクライアント側がソースコードを確認した時に伝えたい内容は「HTMLのコメント文」というように使い分けましょう。
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。