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

推薦する

IE8 ベータ 1 には注意が必要な 2 つの領域があります

<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...

フェッチネットワークリクエストのカプセル化例の詳細な説明

エクスポートデフォルト({ URL、 メソッド = 'GET'、 データ = nu...

CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

序文最近CocosCreatorを学びたいと思ったので、エディターをダウンロードして起動しました。誰...

mysql order by in の文字順序の詳細な説明 (推奨)

//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...

Vueは画像のドラッグアンドドロップ機能を実装します

この記事の例では、画像のドラッグアンドドロップ機能を実現するためのVueの具体的なコードを参考までに...

Ubuntuのpython3でvenvを使用して仮想環境を作成する

1. 仮想環境はプロジェクトに従い、単一のプロジェクト用の仮想環境を作成します(Python 3.4...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

Mysql クラシック高レベル/コマンドライン操作 (クイック) (推奨)

サーバーとデータベースの構築方法を学ぶ必要があるため、最近は SQL 言語を独学で学び始めました。デ...

MySQL のロック待機とデッドロック問題の分析

目次序文: 1. ロック待機とデッドロックを理解する2. 現象の再発と治療要約:序文: MySQL ...

Linux デュアル ネットワーク カード バインディング スクリプト メソッドの例

Linux の操作と構成作業では、デュアル ネットワーク カードのバインディングがよく使用されます。...

Linux におけるゼロコピー技術の使用に関する簡単な分析

この記事では、Linux におけるいくつかの主要なゼロコピー テクノロジと、ゼロコピー テクノロジを...

HTMLフォームのいくつかの送信方法の概要

最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...

JavaScript イベント キャプチャ バブリングとキャプチャの詳細

目次1. イベントの流れ1. コンセプト2. DOMイベントフロー2. イベントの委任1. イベント...

Linuxでユーザーが所属するグループを変更する方法

Linuxでユーザーが所属するグループを変更する1. ユーザーのグループを設定する usermod ...

Centos7.3 での mysql5.7 のインストールと設定のチュートリアル

この記事では、MySQL 5.7のインストールと設定のチュートリアルを参考までに紹介します。具体的な...