Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

さくらのレンタルサーバスタンダードでphpからシェルスクリプト(git pull)を実行する

参考にさせて頂いたページ

bitbucketからの自動デプロイ - Qiita

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と表示されたら

以下のページなどを参考にパーミッション変更してみてください。

UNIXの部屋 コマンド検索:chmod (*BSD/Linux)