CentOS 7 に PHP5 用の suPHP をインストールする方法 (Peng Ge)

CentOS 7 に PHP5 用の suPHP をインストールする方法 (Peng Ge)

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行されます。この方法では、PHP を実行するために大きな権限が必要となり、セキュリティ上のリスクが生じる可能性があり、サーバーの他のユーザーによる影響を受ける可能性もあります。

次のように phpinfo を通じて PHP 情報を表示します。

ApacheはPHPを実行する

ご覧のとおり、PHP は現在、スクリプトごとに個別のプロセスを実行するのではなく、Apache の一部として実行されています。 PHP スクリプトを Apache ではなく現在のユーザーとして実行したい場合は、suPHP をデプロイすることでこれを実現できます。次に、CentOS 7 に suPHP をインストールする方法を紹介します。

まず、suphp をインストールするために必要な環境を設定します。

yum -y groupinstall '開発ツール'
yum -y インストール apr-devel
yum -y httpd-devel をインストールします

suphp インストール パッケージをダウンロードします:

mkdir temp
CD温度
http://suphp.org/download/suphp-0.7.2.tar.gz をダウンロードしてください
tar zxvf suphp-0.7.2.tar.gz

suphp パッチをダウンロードしてインストールします。

wget -O patchingsuphp.patch https://www.webhostinghero.com/downloads/php/suphp.patch
パッチ -Np1 -d suphp-0.7.2 < パッチ適用suphp.patch
suphp-0.7.2をインストールします
自動再設定 -if

./configure を実行します:

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr

/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner

--with-logfile=/var/log/httpd/suphp_log

コンパイルしてインストールします:

作る
インストールする

Apache設定ディレクトリにsuphp.confを作成します。

vi /etc/httpd/conf.d/suphp.conf

そしてこう書きます:

ロードモジュール suphp_module モジュール/mod_suphp.so

/etc ディレクトリに suphp.conf 設定ファイルを作成します。

vi /etc/suphp.conf

設定ファイルの内容を次のように記述します。

[グローバル]
;ログファイルへのパス
ログファイル=/var/log/httpd/suphp.log
;ログレベル
ログレベル=情報
;ユーザーApacheは次のように実行されています
webserver_user=apache
;すべてのスクリプトが保存されるパス
ドキュメントルート=/
;スクリプトを実行する前の chroot() へのパス
;chroot=/mychroot
; セキュリティオプション
ファイルグループの書き込みを許可する=true
allow_file_others_writeable=false
ディレクトリグループへの書き込みを許可する=true
allow_directory_others_writeable=false
;DOCUMENT_ROOT 内のスクリプトを確認します
check_vhost_docroot=true
;マイナーエラーメッセージをブラウザに送信する
ブラウザへのエラー=false
;PATH環境変数
env_path=/bin:/usr/bin
;設定するumaskを8進数で指定します
umask=0077
; 最小UID
最小UID=100
; 最小GID
最小_gid=100

[ハンドラー]
;php スクリプトのハンドラ
x-httpd-suphp="php:/usr/bin/php-cgi"
;CGI スクリプトのハンドラ
x-suphp-cgi="実行:!self"

ドメイン名ディレクトリをユーザー user として実行する場合は、次のようにディレクトリ所有者プロパティを user に変更します。

chown -R [ユーザー].[ユーザー] /var/www/html/[ドメイン名]

最後に、Apache 構成ファイルで対応するドメイン名を見つけて、suphp を有効にします。

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler なし
</ファイル一致>
<IfModule mod_suphp.c>
suPHP_Engine オン
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</ファイル一致>
suPHP_AddHandler x-httpd-suphp
</モジュール>

最後にApacheファイルを再起動します。 info.php テストを通じて、次の図に示すように、ドメイン名を実行しているサーバー API が Apache から CGI/FastCGI に変更されたことがわかります。

この時点で、デフォルトの Apache ハンドラーではなく suph を介して実行される CentOS のドメイン名アクセス設定が完了しました。他のドメイン名を設定する必要があります。上記の手順をもう一度実行してください。

以下もご興味があるかもしれません:
  • CentOS 7.2 に SuPHP をインストールするための詳細な手順

<<:  macOS での MySQL 8.0.16 のインストールと設定のグラフィック チュートリアル

>>:  React refsの詳細な紹介

推薦する

Dockerのプロセスとイメージを実行するための基本コマンドの詳細な説明

目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...

backgroundImage を使用して画像カルーセルの切り替えを解決する詳細な説明

単一のDOMノードでカルーセルを実装するbackgroundImage を使用すると、複数の画像を追...

Tomcat のプレースホルダーによるポート設定方法 (パラメータ指定方式)

仕事で必要になったため、インターネットで多くの情報を見つけましたが、それらはすべてコピーアンドペース...

Vueのトランジションとアニメーションの深い理解

1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...

MySQL InnoDB の重要なコンポーネントの概要

Innodbには以下のコンポーネントが含まれています1. innodb_buffer_pool:これ...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

MySQLで指定した時間前にレコードを自動的に削除する方法

イベントについて: MySQL 5.1 では、イベントの概念が導入され始めました。イベントは「時間ト...

基本的な HTML ディレクトリの問題 (相対パスと絶対パスの違い)

相対パス - ファイルを参照する Web ページの場所に基づいて確立されたディレクトリ パス。そのた...

MySQL レプリケーション テーブルの詳細とサンプル コード

MySQL レプリケーション テーブルの詳細な説明テーブル構造、インデックス、デフォルト値などを含む...

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします

設定ファイルに直接 サーバー{ listen 80 default; # IPへの直接アクセスを禁止...

Docker を使用してコンテナ内のルート パスワードを変更する方法

1. dockerfileを作成するときにsshパスワードを設定するには、次のコマンドを使用します。...