プログラム作業で自分のパソコンで開発を行い、公開前にWebサーバーで動作確認したく、さくらサーバーにUPして確認すると上手く動作しない。

作業の内容としては、elfinderというWeb上でディレクトリ操作ができるというもの。WordPressでいうとメディアで画像の挿入したりアップロードしたりする機能。開発環境ではなにも問題なかったのに、アップロードして開いてみると、以下のエラーが発生で動作しなくなった。

無効なバックエンドレスポンスです。JSONデータではありません

どうやらPHPのバージョンが古い可能性があると指摘があり、コントロールパネルに入って変更作業しようと思ったところでちょっと待ったがかかった。

どうやら他のサイトもあるため、変更すると不具合が起きる可能性ありということだそう。

現在設定されているバージョンが「5.2.17」だった。自分が開発した環境では「7.4」、そら上手く動かんわなって話。

調べると、サイトごと?ディレクトリごと?に動作するPHPのバージョンが変更できるのだそう。これはありがたい。

ということで、調べた結果は以下の方法で解決。

Webサーバーにアップロードしたディレクトリの中に.htaccessとphp.cgiというファイルを作成。

.htaccessには以下の文章を入力

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

php.cgiには以下を入力

#!/bin/sh
exec /usr/local/php/7.4/bin/php-cgi

その後、再度サイトをのぞきにいくと動作していた。開発するときには本番環境も開発環境もなるべく同じにして行うことが大事なんだなーと痛感した出来事でした。