質問(Question)
サイトのfunctions.phpの2行目にメタネームを入れたところ、サイトが出なくなりサイトトップにfunctions.phpの2行目がおかしいという文字が出ました。
(実際は英文というかコードでした)
はっきり覚えてないですが末尾は「~post.php on line 2」だったと思います。
FFFTPでfunctions.phpを開きPCのデスクトップ画面に貼りつけ、
入れたを消し再度functions.phpに戻し上書きアップロードしました。
(メモ帳で編集しました)
ダッシュボードには入れたのですが、今度は記事投稿時に下記の文が出ました。
Warning: Cannot modify header information – headers already sent by (output started at /home/○○/public_html/サイトURL/wp-content/themes/refine-snow/functions.php:1) in /home/○○/public_html/サイトURL/wp-admin/post.php on line 235
Warning: Cannot modify header information – headers already sent by (output started at /home/○○/public_html/サイトURL/wp-content/themes/refine-snow/functions.php:1) in /home/○○/public_html/サイトURL/wp-includes/pluggable.php on line 1178
(下の方は、メニューの所にも出ます)
サイト内のfunctions.phpを見たら改行が多く入っていました。
解決方法を色々調べた結果、以下の(ワードプレスフォーラム)質問投稿にたどり着きました。
(ワードプレスフォーラム・PHPエラー(headers already sent)を解決する方法)同じような症状です。
BOM
上記の質問の回答を見るとメモ帳で編集するのは厳禁で、メモ帳にはBOM(バイトオーダーマーク)が入っておりそれが原因の可能性があるとのことでした。
本来ならTeraPad(文字コードUTF-8N)で編集する必要があるとのことでした。
原因はメモ帳なのかなと思い、上記の質問者様がした方法をそのまま実行したのですが、やはり上記のエラーが出ます。
(私のやり方が間違っている可能性が高いかもしれないです)
FFFTPでfunctions.phpをデスクトップ画面に出しました(貼りつけました)、メモ帳からTeraPad(文字コードUTF-8N)へ変え上書き保存、再度FFFTPで戻した(上書きアップロード)のですが上記と同じエラーが出ました。
(わかりませんが、ここが間違っているような気もします)
別の方法はないかと思い、エラーを起こしたサイトと同じテーマ(functions.phpも同じ)のサイトがあるので、そのサイトのfunctions.phpをコピーしTeraPadに貼りつけ、それをコピーしてエラーサイトのfunctions.phpに貼りつけ、ファイルの更新をしました。
すると、今度はサイトトップに
Parse error: syntax error, unexpected $end in /home/○○/public_html/サイトURL/wp-content/themes/refine-snow/functions.php on line 525
と出ました。この場合、ダッシュボードにも入れません。
functions.phpの525番目がおかしいのかなと思い、一番最後の改行を消しました。
すると今度は
Parse error: syntax error, unexpected $end in /home/○○/public_html/サイトURL/wp-content/themes/refine-snow/functions.php on line 524
と出ました。
Windows8.1、IE11です。
現在の状況は、記事投稿時にエラーが出る状態です。
これ以上、どうしていいのかわかりません。
なんとか元の状態へ戻したいです。
何卒宜しくお願い致します。
回答(Answer)
今までfunctions.phpの情報を一切触っていないのであれば、まっさらの同じテーマをダウンロードして、その中のfunctions.phpを何もいじらずに(ファイルを開いたりしないで)そのままアップロードすればいいのでは?
もしも追加したものなどがあるなら今デスクトップにあるfunctions.phpの中の行をコピーしてアップロードする、もしくはWordPressの管理画面のテーマ編集から編集作業すればいいと思います。
返信
ありがとうございます。
PCにテーマのzipがあり一切触っていないfunctions.phpがありました。そのfunctions.phpをFFFTPでfunctions.phpへ上書きアップロードする方法でいいのでしょうか。
方法は、zipから取り出したfunctions.phpをコピーしてデスクトップ画面に置く。FFFTPでfunctions.phpまでいき、デスクトップ画面のfunctions.phpをドラッグして上書きするということでしょうか。
返信に対する私の回答
そうです。ただ不具合が不具合を産むといけないので、一応今サーバーにあるfunctions.phpはxxfunctions.phpなど別の名前にした上で(仮のバックアップですね)、デスクトップにあるfunctions.phpをアップロードしてテストしてみてください。
返信
上記の方法で無事解決しました。
助かりました。ありがとうございました。
追記事項
functions.phpに直接コードを記述するとエラーなどがあったときには「更新」ボタンを押した途端に画面が真っ白になって途方に暮れることになります。こうならないためにもプラグインを使ってチェックしてもらいながらコード(スニペットといいますが)の管理をすると問題の発生を最小限に食い止めることができます。