学生向けのサイトがあり、Ubuntu14.04で実行されています。学生が自分のサイトに登録すると、ユーザー情報がMySQLDBに保存されます。
私のサイトに登録するときに、UbuntuインストールのWebサイトを学生に提供したいと思います。これを自動化したいと思います。私の質問は-MySQLDBから直接データを使用して、Ubuntuでサブドメイン(username.mydoamin.com)を提供することはできますか、それともPHPからUbuntuでシェルコマンドを実行して、現在手動で行っていることを自動化できますか?
pHPからUbuntuでシェルコマンドを実行し、現在手動で行っていることを自動化できますか?
Shell_exec()
関数または_` `
_(バッククォート)演算子を使用して、PHP
内からシェルコマンドを実行できます。PHP
<5.4.0を実行している場合は、最初に必ず セーフモード を無効にしてください。そうすると、PHP
スクリプトで、次のいずれかの構文を使用できます。
$return = Shell_exec('<Shell_command>');
$return = `<Shell_command>`;
_単一のコマンドから戻り値を取得する場合を除いて、要求していることを実行する最も簡単な方法は、シェルで手動で実行しているすべてのものを、呼び出されるスタンドアロンのbash
(またはその他の)スクリプトに凝縮することです。これらの方法のいずれかを使用して1回。たとえば、bash
スクリプトの構文は次のようになります。
$return = Shell_exec('bash script.sh');
$return = `bash script.sh`;
_スクリプトにパラメーターを渡すには(例:_$username
_変数の値):
$return = Shell_exec("bash script.sh '$username'");
$return = `bash script.sh '$username'`;
_bash
スクリプト内で渡されたパラメーターを取得するには(たとえば、上記の方法で渡された_$username
_変数の値):
_#!/bin/bash
# ...
username=$1
# ...
_
または、必要に応じて_$1
_を参照するだけです。例:
_#!/bin/bash
# ...
echo "$1"
# ...
_
私自身の質問のフォローアップとして、私は自分の経験について詳しく説明します。シェルの実行をPHPから機能させましたが、ソリューションに大きなセキュリティ上の問題がありました。それは私の手からの大きな間違いであり、最初はこれを見ていませんでした。
セキュリティリスクを排除するために、アクティブ化されたユーザーをユーザーテーブルで検索するbashスクリプトを作成しました。ユーザーがアクティブで、Linuxユーザーではない場合、ユーザーはLinuxで作成され、データベースユーザーが作成され、サブドメインが作成され、sshがユーザーに対してロックされます。 60分ごとに実行されるcronジョブを設定し、ユーザーが作成されると、登録情報が記載された電子メールがユーザーに送信されます。
これにより、多くのセキュリティリスクが排除されます(すべてではありません)。
ビャルケ