php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

nginxで画像が表示されない。。

nginxで画像が表示されない。。

表題の通りなんですがnginxを試しに使いブラウザ表示したのですが画像が表示されませんでした。
原因は簡単で設定ファイルに画像系(というか静的)ファイルにアクセスした時にどのディレクトリに流すのかを明記していなかったからです。


    location ~* .(html|css|js|jpe?g|png|gif|ico|swf|woff2|ttf)$ {
      root /home/user/html;
      expires 10d;
      access_log off;
    }

下のようにしか書いていなかったのでphp拡張子にアクセスした時だけ指定のディレクトリを参照するようになっていただけなんですね。先ほど書いた設定を追加して無事表示されました。
    location ~ \.php$ {
  ・・・・
    }

今まではapacheしか使ったことがなかったので対象ホストのドキュメントルート指定すれば大体は動いていたんでよかったんですが今回初めてnginxを使ったのですが細かく指定するみたいですね。

------------------2018/04/01 追記
今、単純な静的WEBサイトを構築しているのですが上の記述だと画像を表示するためには画像のlocation設定をしなければならないように捉えられるなと思ったので追記しました。上の記述はphpのlocation設定しかしていなかったので画像のlocation設定も加えないと参照されないといことです。
例えばデフォルトの記述があるのですが
    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }
こちらですと画像だろうがHTMLファイルだろうがアクセスできました。
ただし直接アクセスできてはよろしくないファイルなんかもあるので拡張子設定やドキュメントルート設定をしていくんでしょうね。

コメント

このブログの人気の投稿

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする