VPS 上の PHP スクリプトでは何もできないようです。
ディレクトリに何かをアップロードしようとすると、「アクセスが拒否されました」というエラーが返されます。
はい、権限を777に変更しました。動作はしますが、セキュリティ上の問題が気に入りません。
コマンドを実行する場合:
ps axu|grep apache|grep -v grep
戻ってくる
nobody 7689 0.1 3.8 50604 20036 ? S 21:38 0:00 /usr/local/apache/bin/httpd -k start -DSSL
root 13600 0.0 3.8 50304 20348 ? Ss Jun06 0:46 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15733 0.1 3.8 50700 20156 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 15818 0.1 3.8 51492 20180 ? S 21:39 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 23843 0.1 3.7 51336 19592 ? S 21:40 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30335 0.0 3.5 50436 18496 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30406 0.0 3.5 50444 18544 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30407 0.0 3.5 50556 18696 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30472 0.0 3.6 50828 19348 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30474 0.0 3.5 50668 18868 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30476 0.0 3.6 50532 19064 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 30501 0.0 3.8 50556 20080 ? S 21:36 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32341 0.0 3.5 50444 18492 ? S 21:41 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32370 0.0 3.5 50444 18476 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32414 0.1 3.7 51336 19524 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32416 0.1 3.5 50668 18816 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32457 0.1 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32458 0.1 3.6 50772 19276 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32459 0.0 3.5 50444 18504 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32460 0.2 3.6 50828 19320 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32463 0.0 3.5 50444 18472 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 32466 0.0 3.4 50436 17960 ? S 21:42 0:00 /usr/local/apache/bin/httpd -k start -DSSL
ディレクトリの所有者は「user [505]」で、グループは「user[508]」です(WinSCPで表示)
PHP スクリプトが動作できるように、Apache ハンドラーを適切な所有者とグループに変更するにはどうすればよいですか?
追伸
私のPHPはセーフモードに設定されておらず、open_basedirは値なし
編集:
これは私の httpd.conf の外観です (連想ドメインの場合)
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/domain/public_html
ServerAdmin info@domain
## User <theUsername> # Needed for Cpanel::ApacheConf
<IfModule mod_userdir.c>
Userdir disabled
Userdir enabled <userName>
</IfModule>
<IfModule mod_suphp.c>
suPHP_UserGroup <userName> <userName>
</IfModule>
<IfModule !mod_disable_suexec.c>
SuexecUserGroup <userName> <userName>
</IfModule>
CustomLog /usr/local/apache/domlogs/domain.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
CustomLog /usr/local/apache/domlogs/domain.com combined
ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/
#Options -ExecCGI -Includes
#RemoveHandler cgi-script .cgi .pl .plx .ppl .perl
答え1
Web サーバーを実行しているユーザーと同じ権限が必要です。これは OS によって異なります。「apache」や「www-data」など、まったく別の権限である可能性があります。
使用していない限りsuEXECスクリプトは Web サーバーによって実行され、そのユーザーと同じ権限で実行されます。
したがって、この問題を解決するには、Apache プロセスがどのユーザーで実行されているかを特定し、スクリプトで変更できるようにするファイル/フォルダーに適切な権限を適用する必要があります。
confファイルでApacheが実行されるユーザーとグループのアカウントを指定するには、
User=[username]
Group=[groupname]
指令。
conf ファイルを確認してください。ファイルの名前と場所は OS によって異なります。ここでもう少し詳細を入力すると、より直接的な回答が得られる可能性があります。
編集: Centosの場合、confファイルは次の場所にあります。
/etc/httpd/conf/httpd.conf
答え2
アップデート!あなたもこの問題に遭遇している場合は、これを試してください:
WHM で次の場所に移動します:
メイン >> サービス設定 >> Apache 設定 >> PHP および SuExec 設定
私が変更され PHP 5 ハンドラー宛先: suphp。
とてもうまくいきました
答え3
WHM メイン >> サービス構成 >> Apache 構成 >> PHP および SuExec 構成 php hadler >> fcgi を変更すると、問題が解決します。