作者abby8050 (LoRdOfCrEaTuRe)
看板Linux
標題Re: [問題] 怎麼離開 at 工作排程
時間Sun Jul 24 16:31:58 2016
※ 引述《kenduest (小州)》之銘言::
: 若你寫 php 是希望達成執行 at 然後可以把資料餵给他,也就是直接程式與 at 互動的話
: 一般會用 popen 方式. 可以查一下 php 本身官方下面的 popen 例子很多程式碼參考
: http://php.net/manual/en/function.popen.php
: 比方:
: <?php
: $command= <<<EOF
: ls -l / > /tmp/ls-result.txt
: date > /tmp/date-result.txt
: EOF;
: $handle = popen("at 22:00","w");
: fwrite($handle,$command);
: fclose($handle);
: ?>
: 最後題外話 shell_exec("cd /"); 這樣一行敘述實際上執行之後,你後續的程式執行工作
: 目錄都還不會在 / 那邊,因為他是 spawn 一個 shell 去執行,執行之後結束該 shell
: 就消失了。除非你剛好一行內有 cd 到其他目錄然後又執行其他命令敘述搭配一起用。
其實是想在client指定的時間才寄出信。
以下方式都可以收到信,問題已解決。
1. 採用popen:
<?php
$command = "mail -s 'title' abby8050@gmail.com";
$handle = popen("at 16:21 07242016", "w");
fwrite($handle, $command);
fclose($handle);
?>
2. 採用文字檔:
<?php
shell_exec("at 18:05 07242016 < /var/html/www/test.txt");
?>
附註: 假若其他朋友在試上面的code,發現在php cli執行可以收到信,
在網站上卻不能收到信,那有可能是web app被設在at拒絕名單了。
可以到/etc/at.deny 把代表你的web app的使用者刪掉。
例如: server是裝LAMP的話,使用者就是www-data
再次感謝k大>///<
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.105.132
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1469349123.A.D9D.html
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 17:11:22
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 17:34:57
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 17:37:41
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 17:50:55
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 18:14:29
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 18:18:17
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 18:32:32
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 18:34:50
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 19:10:32
推 kenduest: 內建php不早就有mail函數,這樣多此一舉 07/24 19:12
推 kenduest: 誤會意思。你 io 重導例子內確認 test.txt 在正確目錄 07/24 19:18
→ kenduest: 內嗎 07/24 19:18
→ kenduest: 另外不是提供 popen 範例有測試過嗎 07/24 19:18
推 kenduest: 另外你應該有裝命令列版本的php, php xxx.php 可以執行 07/24 19:24
→ kenduest: 嗎 07/24 19:24
→ abby8050: php cli 試了date > test.txt 不含at就可以 含at就不行 07/24 19:41
→ abby8050: IO重導例子 test.txt寫成絕對路徑 php cli可以執行 但是 07/24 20:01
→ abby8050: 在網頁上點這個連結就不行 07/24 20:02
推 kenduest: 確認檔案權限與selinux設定 07/24 20:30
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 20:38:29
→ abby8050: 檔案權限send_mail.php和test.txt都是777了 然後不知道 07/24 20:46
→ abby8050: 要搞懂selinux的哪一部分呢? (第一次聽到這個) 07/24 20:47
推 kenduest: setenforce 0 暫時關閉後測試 07/24 20:57
→ kenduest: 先問你用哪個linux系統,rh based 才有selinux 07/24 20:58
→ abby8050: ubuntu 07/24 21:04
→ abby8050: 我知道問題在哪裡了>< 要去/etc/at.deny把 www-data刪掉 07/24 22:17
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 22:26:06