WinSCPのエディタ変更
PHPのheader()関数などが正常に動作しない原因を調べていたらファイルエンコードの問題だった。
非常に原因が分かりにくい問題で数か月経つと忘れそうなのでメモ。
WinSCPのエディタはデフォルトでVisual Studio Codeにしておこうというお話。ついでに後半はエンコードの変更方法までメモメモ。
WinSCPの初期設定のエディタで簡単なコードを書いてたのだけれど、そのエディタで保存すると「UTF-8」を指定して保存出来ないことが解った。
UTF-8 with BOM(Byte Order Mark)で保存されると先頭に付与されるBOMの影響でhader()関数が動かないらしい。
見た目上エラーも履かないし、ブラウザのコンソール何かにもメッセージすら表示されずなんか知らんが動かない状態になってしまいます。
そこでWinSCPのエディタはVisual Studio Codeに変更する。

WinSCPを起動したらオプションメニューから環境設定をクリック。

環境設定からエディタを選択し、追加ボタンを押下する。

外部エディタにVisual Studio Code(以降VSCに省略)のショートカットなどから調べた実行ファイルのファイルパスを貼り付けます。OKボタンで設定完了。
テキストに直接入力する場合はダブルクォートで括る必要があります。
"C:\Users\{ユーザ名}\AppData\Local\Programs\Microsoft VS Code\Code.exe"
デフォルトで登録されている内臓エディタとNotepadが起動しないようにエディタの順番は一番上にしておきます。
WinSCPの設定はこれで完了。
Visual Studio Codeによるエンコード修正

WinSCPで見えている該当のファイルを編集で開く。VSCの右下に現在のエンコードが表示されるので変更する場合はここをクリック。

VSCの上の窓にSave with Encodingがリスト表示されるのでクリックする。

UTF-8を選択する。
PHPの確認方法
$_SESSIONがなぜか読み込めないとか、header()関数でリダイレクトが動かないという症状が出たときには以下で確認。
<?php
session_start();
print_r($_SESSION);
?>
画面が真っ白で何も表示されない場合はファイルエンコードを疑う。問題なければSESSION情報が表示される。


コメント