2011-07-11 27 views
0

PHPスクリプトを使用してLinuxサーバを再起動できるかどうかを知りたいですか?静的IPアドレスからDHCPアドレスへの変更に関連して、有効になるようにシステムを再起動する必要があります。PHPサーバでLinuxサーバを再起動する

私はこのコードを試してみました:

system("/usr/bin/reboot"); 

エラーメッセージがある:

リブート:

system('/etc/init.d/network restart'); 

エラー:here'e別

useruserなければなりませんis:

ループバックインターフェイスをシャットダウン:[FAILED]ループバックインターフェイスを育てる:[FAILED]

は、あなたがこの中で私を助けることができる願っています。

ありがとうございました!

よろしくお願いいたします。

+1

共有ホスティングでこれを試してみてください。 –

+0

私は共有ホスティングではないローカルサーバーで作業しています。 – hmbarit

答えて

3

インタープリタwebserverのprogram-users-contextにこれらのコマンドを実行する権限がある場合は、再起動できます。 WebサーバーまたはPHPインタープリタは、ルートとして実行しないでください。両方の場合に権限をエスカレートするためにsudo, sudoersを使用することができます。あなたはこのようにsudoを使用する必要があります

+0

ありがとう、私はサンプルスクリプトを提供できますか?私はLinuxのコマンドで新しいです - 私はCentOSディストリビューションを使用しています。ありがとうございました。 – hmbarit

+0

'sudo'を使用する例をここに見てくださいhttp://mannyvellon.sys-con.com/node/851342/mobile – fyr

2

:あなたの/ etc

system("sudo /usr/bin/reboot"); 

/sudoersファイルには、次の行を追加します。

apacheは、PHPスクリプトを実行するの下にユーザー名です
apache ALL=(ALL) NOPASSWD: /usr/bin/reboot 

サーバーを再起動するためにサーバー上のPHPスクリプトにアクセスできるユーザーは誰でもこれを行うことのセキュリティ上の覚えがあることに注意してください。 DHCPに静的からIPアドレスを変更することに関連して

+0

ありがとう、私はこれを試します.. :) – hmbarit

+0

ここでapacheはPHPスクリプトが実行されます。どうすればこのことを知ることができますか? – hmbarit

+0

'ps -df |を使用してください。 grep apache'を実行してapacheプロセスを見つけます。ユーザー名は最初の列にある必要があります。 – qbert220

1

、私はあなたがいないんシステム

を再起動する必要があります。これはMicrosoft Windowsではありません。しかし、ネットワークインターフェイスを再マッピングするコマンドは、配布ごとに異なります。同様に、reboot、shutdown、init、およびtelinitコマンドへのアクセスは、配布ごとに異なります。

私は、なぜ単にssh経由またはコンソールでそれをしないで、ローカルサーバーに

を働いていますか?

+0

ありがとう...私はLinuxの初心者ですが、私はまだそれの他の機能について知りません。 – hmbarit

0

あなたはLinuxの初心者だと言いましたので、多くの人がだと指摘しておきたいと思います。はWindowsと比べてLinuxボックスを再起動する必要がありません。

コアソフトウェアパッケージのアップデート後も再起動する必要はありません。何かがひどくクラッシュしたとしても、再起動する必要はありません。

あなたはリブートをしたい理由を述べていませんが、ボックス全体を再起動することは本当に最後の手段であるべきです。実際、問題を引き起こす原因の証拠を取り除く傾向があり、問題が繰り返されるのを防ぐために何もしないので、問題を解決するために単にリブートすることはLinux管理者にとって非常に悪い習慣であると考えられています。

Linuxの場合、Windowsボックスを再起動する必要があるほとんどの問題では、個々のプログラムまたはサービスを再起動する必要があります。

最後に、セキュリティに関する注意事項:PHPプログラムを介してこのような主要なシステム操作を行うことは、ルートレベルの機能を非rootユーザーに公開するため、セキュリティ上の慣習としては不適切です。私はこのPHPページへのアクセスをロックダウンしようとしていますが、最高のセキュリティで保護されたWebページであっても、ルートレベルの操作を実行するのに十分な安全性があると考えてはいけません(私は希望

要するに、私のアドバイスは、これを行うべきではないということです。 にする必要がある場合、@ qbert220の回答はうまくいくはずですが、しないでください。

[編集] IPアドレスをDHCPから静的に変更する場合は、Linuxでサーバーを再起動する必要はありません。ネットワークインターフェイスを再起動するだけで済みます。

あなたが設定を変更したら、このようなものは、代わりに新しいIPアドレスを持つネットワークインターフェイスを再起動するのに十分でなければならない:

sudo /etc/init.d/networking restart 

あなたはあなたがしているのLinuxの何さまざま指定されていませんを使用しますが、ここにはhow to do it from the commandline in Ubuntuの詳細ページへのリンクがあります。

しかし、これを達成するにはsudoを使用し、Webユーザーをsudoersリストに追加する必要があります。これは前に述べたように、セキュリティ上の観点からはあまり効果がありません。

+0

あなたの助言に感謝します。しかし、私のプロジェクトは、私は私たちのサーバーのIPアドレスを変更することができますWebページを作成することですDHCPから静的なIPに、またはその逆...どのように効果を反映することができますサーバーを再起動せずに?どうすればrootユーザーになれますか? PHPスクリプトを使って新しいファイルを作成するたびに、ファイルのユーザーとして「apache」と表示されます。何か案が? – hmbarit

+0

@hmbarit - これは、サーバー全体を再起動するのではなく、ネットワークインターフェイスを再起動するだけで可能です。場合によってはApacheを再起動する必要があるかもしれません。 – Spudley

0

スクリプトはrootとして実行するように設定する必要があります。

reboot.php

<?php 
    exec("reboot -d -f -i"); 
?> 

Mekeそれrootスクリプト:

chown root.root reboot.php 
chmod 700 reboot.php 

しかし、なぜPHPでこれを行いますか?次のようにスクリプトを作成してください:

#! /bin/sh 
PATH=/sbin:/usr/sbin:/bin:/usr/bin 
reboot -d -f -i 
関連する問題