ホームページ >バックエンド開発 >PHPチュートリアル >PHP 制御 nginx ソリューション
PHP は nginx を制御します
質問する...
nginx を制御するための既存の nginx.php スクリプトがあります。
開始、停止、再起動などがある場合
php にも nginx にも root 権限がありません。
exec システム関数を使用します。
基本的な ls cp コマンドは問題ありません。
kill -INT `cat /usr/local/nginx/logs/nginx.pid`;
テストは実行できません。
cat /usr/local/nginx/logs/nginx.pid には問題ありませんが、kill コマンドが実行できません。
kill 権限に問題があると思います。どうすればよいかわかりません。 。
nginx も停止できるものとします。その場合、nginx.php は単独では実行できません。nginx を起動するにはサーバーにアクセスする必要があります。
nginx.php を正常に実行できるようにするには、どのように対処すればよいでしょうか?
新しいポート、プロセスなどを開く必要がありますか?
この分野の経験を持つ友人が教えてくれます。私にアドバイスを。
あるいは、専門家が参考になる情報を提供してくれるかもしれません。
-----解決策---------
http://www.osseye.com/?p=295
記事を見つけましたので、お役に立てれば幸いです。
------解決策------------------
これは別の権限の問題であり、注意する価値があります。解決策を待ってください ~~
------解決策---------
chmod 755 を試してください
------解決策------------------
シェルを作成し、php を使用してこのシェルを呼び出すことは可能ですか?
BB マシンを拭きます...兄の 1500 中国製 Runxun bb マシンがベルトに固定されていたとき、どれほどまぶしかったかを覚えています...
------解決策------------------
もちろんWebインターフェースからは操作できない――。 。
php スクリプトを作成し、SSH を使用してリモート サーバーを操作し、nginx の再起動やシャットダウンなどを実行します。関連するインターフェイスは次のとおりです:
http://cn.php.net/ssh2、およびサーバーsshdサービスがオンになっています。
この場合、権限は ssh ユーザーに関連するため、適切なユーザー ssh でコマンドを実行するだけです。
概要
#include
int kill(pid_t pid, int sig);
プロセスがシグナルを送信する権限を持つ場合pid で指定されたプロセスに送信する場合、送信プロセスに適切な権限がない限り、送信プロセスの実際のユーザー ID または
の実効ユーザー ID は、受信プロセスの実際のユーザー ID または保存された set-user-ID と一致する必要があります。
これは、Kill の権限の問題です。root であるか、nginx プロセスの実際のユーザー ID と同じであるか、nginx プロセスの保存された設定ユーザー ID と同じである必要があります。
------解決策------------------
Nginx の C ソース コード実装の観点から見ると、マスター プロセスは root によって開始され、その実際のユーザー ID がファイル所有者になります。マスター バインド 80 の後に setuid が別の有効なユーザー ID に切り替わった場合、savfed set-user-ID は次のようになります。根。
したがって、nginx を強制終了したい場合は、root として ssh するか、Nginx バイナリ ファイルの所有者として ssh を実行することができ、どちらも強制終了できます。
nginx 設定ファイルに記述された作業ユーザーと作業グループに関係なく、それらは権限を減らすために nginx ワーカー プロセスの setuid によって使用されます。
------解決策------------------