Suphp
Suphp phpハンドラーは、特定のユーザーの所有権と権限でphpスクリプトを実行するapacheモジュール(mod_suphp)です。
システムはどのユーザーのphpスクリプトが実行されているかを追跡できるため、これはセキュリティの強化と見なされます(問題が発生した場合)。
共有ホスティング環境では、インストールと構成が非常に簡単なため、suphpは非常に人気があります。
Suphpはphpをcgiとして実行します。したがって、php5-cgiパッケージをインストールする必要があります。このため、suphpはmod_phpよりもはるかに低速です。
ただし、Suphpは、スクリプトを実行したユーザーを識別するセキュリティを追加します。したがって、phpをcgiとして実行する必要がある場合は、suphpが推奨される方法です。ただし、fastcgi、fpmなど、cgiと比較してパフォーマンスが高い代替手段がはるかに優れています。
Suphpは2つのコンポーネントで構成されています:
1. mod_suphp-mod_php
2を置き換えるApacheモジュール。 suphp-Apacheのsuexecを置き換えるsetuidバイナリであり、特定のユーザー権限でphpを実行します。
1。 Ubuntuにsuphpをインストールする
1.最初にsuphp用のapacheモジュール、パッケージlibapache2-mod-suphp
をインストールします。$ sudo apt-get install libapache2-mod-suphp
2.次に、ubuntuのデフォルトのphpハンドラーであるmodphpを無効にします
$ sudo a2dismod php5 Module php5 disabled. Run '/etc/init.d/apache2 restart' to activate new configuration!
3.次にApacheを再起動します
$ sudo /etc/init.d/apache2 restart * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [ OK ]
これにより、suphpがインストールされて有効になります。 modphpの設定ファイルはここにあります
$ cat /etc/apache2/mods-enabled/suphp.load LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so
apacheのsuphp構成はこちら
$ cat /etc/apache2/mods-enabled/suphp.conf <IfModule mod_suphp.c> AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml suPHP_AddHandler application/x-httpd-suphp <Directory /> suPHP_Engine on </Directory> # By default, disable suPHP for debian packaged web applications as files # are owned by root and cannot be executed by suPHP because of min_uid. <Directory /usr/share> suPHP_Engine off </Directory> # # Use a specific php config file (a dir which contains a php.ini file) # suPHP_ConfigPath /etc/php4/cgi/suphp/ # # Tells mod_suphp NOT to handle requests with the type <mime-type>. # suPHP_RemoveHandler <mime-type> </IfModule>のリクエスト
上記の構成により、suphpはphpファイルのハンドラーになります。
2。各仮想ホストのユーザーIDとグループIDを設定します
suphpに特定のuserid/groupidを使用してphpスクリプトを実行させるには、apache構成ファイルで各仮想ホストの構成をセットアップする必要があります。
ubuntuのapache構成ファイルは次の場所にあります
/etc/apache2/sites-available/default
関連する仮想ホストを編集し、以下に示すようにsuphpユーザーグループ設定を追加します。 suPHP_UserGroupディレクティブは、特定の仮想ホストにuserid/groupidを使用するようにapacheに指示します。
<VirtualHost 64.131.72.23:80> ServerName some-site.com ServerAlias www.some-site.com DocumentRoot /home/mike/public_html <IfModule mod_suphp.c> suPHP_UserGroup mike mike </IfModule> </VirtualHost>
メインのApache構成ファイルを編集したくない場合は、同じディレクトリに新しいファイルを作成します
/etc/apache2/sites-available/
そして、そのファイルに仮想ホストブロックを追加します。次に、a2ensiteコマンドを使用して設定を適用します。
$ sudo a2ensite file_name
3。権限を構成する
phpファイルがグループごとに書き込み可能である場合、Suphpは「500内部サーバーエラー」も表示します。エラーログには次のようなエントリがあります
SoftException in Application.cpp:564: Directory "/var/www" is writeable by group, referer: http://localhost/index.php
これを修正するには、権限を確認し、グループまたは他のユーザーが読み取りを期待するphpファイルに対する権限を持っていないことを確認してください。