PHP - 可以寫 Shell Script
每個語言都能做相同的事,例如: 列印出最經典的 Hello World! 或是 每次作業都會看到的九九乘法表,不過我就是不曉得如何請程式語言 A 去跟程式語言 B 說,請把 Hello World 給我!?時在太慚愧了,好險瞭解了 PHP 與 Shell Script 的關係是可以這樣做的,甚至是 PHP 可以直接來作 shell script 可以做的事,進一步與 Data Base 存取得到更多的資訊。
很高興的是,僅採用 PHP 的 shell_exec() 函式就能達成這件事情哦,看看以下的例子。
在 Linux commend line 取得時間
用 PHP 下指令可以這麼做!
函式 shell_exec 官方的線上手冊。
萬事不求人的 PHP 怎處理呢?
突然要寫萬年曆,偏偏網路上抓不到程式碼,正在苦惱的同時,也可以用 PHP 與 shell script 來處理哦,怎麼做呢? UNIX/Linux 有一個指令叫做 cal,他可以替我們完成,換個講法有內建幹嘛自己做? 於是基於程式碼或是應用在造的理念,我們可以直接使用 :)
輸出 2010 年 5 月
可以再寫活一點,讓使用者輸入"月"和"年"
如果想要用 PHP 寫成的 shell script 在 Linux 端執行,建議可以在每個 PHP 檔案程式前面加註
進階用法
上面都是 Web 網頁,若只想在終端機上面操作 PHP Script 可行嘛!?是可以的。這也是請出 PHP 身家(/usr/bin/php) 的原因哦,來寫個簡單的 shell script in PHP 吧!
延伸閱讀
[1.] 用 PHP 編寫 Shell Script
[2.] PHP 透過 Sudo 執行 root 指令
很高興的是,僅採用 PHP 的 shell_exec() 函式就能達成這件事情哦,看看以下的例子。
在 Linux commend line 取得時間
[user@local:~]$ date
用 PHP 下指令可以這麼做!
<?php
$output = shell_exec("/bin/date");
echo $output;
?>
指令必須要清楚的列出在那個路徑,萬一不曉得指令在哪兒? 請用 where + 指令即可。函式 shell_exec 官方的線上手冊。
萬事不求人的 PHP 怎處理呢?
<?php
echo date("D M d H:i:s T Y")
?>
函式 date 的參數可以參考官方的線上手冊。突然要寫萬年曆,偏偏網路上抓不到程式碼,正在苦惱的同時,也可以用 PHP 與 shell script 來處理哦,怎麼做呢? UNIX/Linux 有一個指令叫做 cal,他可以替我們完成,換個講法有內建幹嘛自己做? 於是基於程式碼或是應用在造的理念,我們可以直接使用 :)
輸出 2010 年 5 月
<?php
$output = shell_exec("/usr/bin/cal 5 2010");
echo "<pre>".$output."</pre>";
?>
可以再寫活一點,讓使用者輸入"月"和"年"
<?php
if($_GET['month'] != NULL && $_GET['year'] != NULL){
$output = shell_exec('/usr/bin/cal '.$_GET['month'].' '.$_GET['year']);
echo "<pre>".$output."</pre>";
}
echo "<form action='cal2.php' method='get'>
<b>Pleases type a <input type='text' name='month' size='5'> month and
<input type='text' name='year' size='5'> year.<br/>
<input type='submit' value='Submit'></b><br/>
</form>";
?>
範例採用 GET 處理,亦可以用 POST,畫面非常單調僅用兩個 input text。如果想要用 PHP 寫成的 shell script 在 Linux 端執行,建議可以在每個 PHP 檔案程式前面加註
#!/usr/bin/php -q/usr/bin 路徑一樣可以用 where php 或是 which php 找出現在正在使用的 PHP 版本程式在哪兒。
進階用法
上面都是 Web 網頁,若只想在終端機上面操作 PHP Script 可行嘛!?是可以的。這也是請出 PHP 身家(/usr/bin/php) 的原因哦,來寫個簡單的 shell script in PHP 吧!
#!/usr/bin/php -q <?php echo date("D M d H:i:s T Y"); ?>啥!在開玩笑嗎? 怎麼跟上面的網頁版差不多啊。的確只差在第一行,是的請執行看看吧。
[user@localhost:www]$ php date.php Fri Apr 23 14:06:35 EDT 2010 [user@localhost:www]$ date Fri Apr 23 14:06:35 EDT 2010是不是一樣呢? 如果你無法使用上述 PHP 指令,請先確認是否安裝 PHP 以及相關套件 php5-cli
apt-get install php5-cli
延伸閱讀
[1.] 用 PHP 編寫 Shell Script
[2.] PHP 透過 Sudo 執行 root 指令
Comments
Post a Comment