参考にさせて頂いたページ
PHPで外部のシェルコマンドを実行するサンプル - 感謝のプログラミング 10000時間
ログインする
以下の手順でログインする。
さくらインターネットのレンタルサーバーにmacのターミナルでログインする - MOTOMICHI WORKS BLOG
前提として
公開鍵をbitbucketに登録してあり、手でコマンド入力して、git pullできる状態になっています。
/home/ユーザー名/shellscript/run-the-shell.phpの作成と記述内容
参考ページの中から、部分的にコピーしています。
<?php
$cmd = '/home/ユーザー名/shellscript/git-pull.sh';
//git-pull.shを実行して結果を取得
$res = system($cmd);
//deploy.log("ファイルパス","モード");
$fp = fopen("deploy.log", "a");
//日時を書き込み
fwrite($fp, date('c')."\n");
if (false === $res) {
//実行結果がfalse
fwrite($fp, "cmd false\n");
} else {
//コマンド実行結果を書き込み
fwrite($fp, $res."\n");
}
//deploy.logを閉じる
fclose($fp);
?>
/home/ユーザー名/shellscript/git-pull.shの作成と記述内容
.gitディレクトリがあるディレクトリに移動して、git pullを実行します。
#!/bin/sh
cd /home/ユーザー名/www/uh-oh/uh-oh__webroot
git pull origin master
パーミッションを変更して確認する
以下のコマンドでパーミッションを変更した。
chmod 400 git-pull.sh
chmod 400 run-the-shell.php
以下のコマンドでパーミッションを確認した。
ls -l
両ファイルとも以下のように表示された。
-r--------
所有者の読み込み権限だけある。
run-the-shell.phpを実行してみる
run-the-shell.phpがあるディレクトリで以下を実行した。
php run-the-shell.php
git pullできた。
おまけ
PHPで外部のシェルコマンドを実行するサンプル - 感謝のプログラミング 10000時間
にあるように
バックティックで囲うとコマンドが実行できたり、shell_exec();でもシェルスクリプトを実行できる。
それぞれ実行するには、ファイルに与えておくべきパーミッションが違うみたい。
もしこの記事のとおりやってPermission deniedと表示されたら
以下のページなどを参考にパーミッション変更してみてください。