ソースからコンパイルされた Nginx と公式 Fedora リポジトリからの Nginx に関する奇妙な問題

ソースからコンパイルされた Nginx と公式 Fedora リポジトリからの Nginx に関する奇妙な問題

TL;DR ソースからコンパイルされた Nginx は .php ファイルの処理に問題がありましたが、同じ PHP-FPM 構成で、公式 Fedora リポジトリからの nginx は DigitalOcean 512MB Fedora 21 x64 VPS で問題なく動作しました。その理由は何でしょうか?

私は、Fedora 21 x64 VPS で DigitalOcean 512MB Droplet を使用しています。

Nginxをソースからコンパイルし、/opt/nginx/にインストールしました。以下は出力です。/opt/nginx/nginx -V

nginx version: nginx/1.7.10
built by gcc 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --sbin-path=/opt/nginx --without-http_autoindex_module --without-http_browser_module --without-http_empty_gif_module --without-http_geo_module --without-http_map_module --without-http_referer_module --without-http_scgi_module --without-http_split_clients_module --without-http_ssi_module --without-http_userid_module --without-http_uwsgi_module --with-http_gzip_static_module --with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-openssl=openssl --with-pcre=pcre --with-zlib=zlib --with-ipv6

これまでは、静的ページのみを提供するために使用していました。今日、公式 Fedora リポジトリから php-fpm をインストールし、上記の構成でソースからコンパイルした nginx を構成して、.php ページを UNIX ソケット経由で PHP-FPM に渡しました。

残念ながら、No input file specifiedエラーが発生しました。以前にもこの問題に直面したことがあるので、何をすべきか分かっていました。すぐにファイルの権限を変更しましたが、それでも同じエラーが発生しました。

何時間も検索し、あらゆる解決策を試しましたが、それでも同じエラーが発生していました。このスレッドある程度同じ問題を共有しているようです。

公式 Fedora リポジトリの Nginx を試してみようと思い、インストールしました。以前の nginx (ソースからコンパイル) を停止し/opt/nginx/nginx -s stop、新しい nginx (公式 Fedora リポジトリ) を設定して、.php を同じ UNIX ソケットの PHP-FPM に渡しました。

そしてそれはうまくいきました。

私の質問は、「公式 Fedora リポジトリの nginx は問題なく動作しているのに、ソースからコンパイルされた nginx では PHP の処理に問題が発生するのはなぜですか?」です。これは SELinux によるものでしょうか?

編集: 私のセットアップに関する詳細情報。

Nginx (ソースからコンパイル)

  • /opt/nginx/ にインストール
  • /srv から Web コンテンツを提供します

Nginx (公式 Fedora リポジトリから)

  • デフォルトのインストール、通常は /usr/sbin/nginx
  • /usr/share/nginx/html/ からコンテンツを提供します

答え1

ついに解決しました。

Web コンテンツは /srv から提供されるため、SELinux は PHP-FPM によるファイルへのアクセスを禁止していました。

次のコマンドを実行する

sudo chcon -R -t httpd_sys_content_t /srv/

問題を解決しました。

ご協力いただいた皆様ありがとうございました。

参照:https://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/

関連情報