ロリポップハイスピードプランでPHP 白い画面問題改善 PHP入りHTMLを動かす

PHPアプリが動かず白い画面に

自前構築サーバで運用していた、PHPアプリを、ロリポップで動かそうと思ったら、画面が真っ白になって動かなくなったので、どういう事かな?と思い、調べて動くようにしたメモです。

ハイスピードプラン PHP.iniは利用できない

ロリポップハイスピードプランを利用しています。PHP.iniは設定を変える事ができません。その時に重宝したのが、

ini_set()

です。

PHP.iniを利用しなくても、PHPファイル内で設定オプションの値を設定する事ができます。ロリポップのハイスピードプランはLiteSpeedが利用されており、PHP設定も下記の通り固定されています。このままだとsession変数も使えない、、、。

ini_setで設定したもの

どこでエラーが発生しているかを表示させる

ini_set(‘display_errors’, “On”);

やっぱり、エラー表示は重要ですよね。画面が真っ白になってどこでどうなっているのか全くつかめない状況でしたが、エラーを表示させることにより、セッション変数が有効になっていない事が分かりました。

session変数を有効にする

ini_set(‘session.auto_start’,”1″);
ini_set(‘output_buffering’,”1″);

ディレクトリ指定は可能

PHPファイル内で読み込みたい別ファイルはディレクトリ指定が可能です。

$data_file = “/home/users/1/cut.jp-1/web/pass/data_file.dat”; //データファイルの指定

また、web上から触られたくないファイルであれば、

/home/users/1/cut.jp-1/pass/data_file.dat

におく事も可能です。

webフォルダが、web公開のルートディレクトになります。

PHP入りHTMLを動かす

標準では、HTMLの中に入れ子したPHPは動きませんでした。PHPコードがそのまま出てきてしまいます。

.htaccessに以下の設定を入れます

AddHandler php7.4-script .html
AddType application/x-httpd-php .php .html

 

動いた!

データダウンロードはWinSCPで

ロリポップのFTP接続だと、webディレクトリ配下しかアクセスできません。セキュリティを考えて、webディレクトリの一つ上の階層にデータディレクトリを作成した場合に、データをダウンロードする時の方法です。

FTP接続すると、webフォルダがルートになるよう設定されいます。なので、この上の階層に移動する事ができません。

WinSCPでSSH接続し、

リモートディレクトリを指定して、ログインすると、うまく指定のディレクトリに入る事ができます。