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の詳細な紹介

推薦する

SSMプロジェクトは、ホットデプロイメント構成を実装するためにTomcatとMavenを使用してWARパッケージとしてデプロイされることが多い。

背景ご存知のとおり、JavaEE プロジェクトを開発した後は、そのプロジェクトをサーバーの Tomc...

フォーム送信の更新ページはソースコード設計にジャンプしません

1. ソースコードの設計コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

MySQL 最適化技術における Limit クエリの最適化分析

序文実際のビジネスでは、ページングは​​一般的なビジネス要件です。次に、制限クエリを使用します。制限...

ウェブサイトのAboutページの紹介コンテンツの書き方

公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...

Discuz! フォーラムに設定オプションを追加する方法

Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...

txt ブックの内容を Web ページに表示するコード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...

MySQL マスタースレーブレプリケーションの実装手順

目次mysql マスタースレーブレプリケーションMySQL マスタースレーブレプリケーション方式My...

Docker のポート解放失敗の解決策

今日、非常に奇妙な状況に遭遇しました。docker イメージを更新した後、docker-compos...

Ubuntu 18.04 での Pycharm インストール チュートリアルの実装

方法1: Pycharmをダウンロードしてインストールするダウンロードアドレス: https://w...

HTML ページ ソース コード レイアウトの概要_Powernode Java Academy

HTML ページ ソース コード レイアウトの概要この紹介では、Google のホームページのソー...

Viteは仮想ファイルの実装を導入します

目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...

after疑似要素を使用して中空の三角矢印とXアイコンを実装する例

フロントエンドのデザイン案では、「X」や「>」の形をした閉じるボタンや、他の 3 方向の白抜き...

iframe を介してフレームセットを本体に配置する

フレームセットと本文は同じレベルにあるため、本文にフレームセットを配置することはできません。まずペー...

MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]

この記事では、MySQL のスロー クエリ操作について例を挙げて説明します。ご参考までに、詳細は以下...

今日は、珍しいけれど役に立つJSテクニックをいくつか紹介します

1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...