當你試圖在沒有任何消息的情況下在git中進行提交時,它會在shell中爲你打開編輯器,當你關閉編輯器時,git將讀取內容。如何在shell中從PHP啓動命令?
我想做的完全一樣,但在PHP中。
正如我在git來源(https://github.com/git/git/blob/master/editor.c)中看到的,它只是開始處理use_shell
標誌設置爲true。我怎樣才能在PHP中實現這一點?另外,我看到git將SIGINT和SIGQUIT信號設置爲忽略。如何在PHP中完成?
當你試圖在沒有任何消息的情況下在git中進行提交時,它會在shell中爲你打開編輯器,當你關閉編輯器時,git將讀取內容。如何在shell中從PHP啓動命令?
我想做的完全一樣,但在PHP中。
正如我在git來源(https://github.com/git/git/blob/master/editor.c)中看到的,它只是開始處理use_shell
標誌設置爲true。我怎樣才能在PHP中實現這一點?另外,我看到git將SIGINT和SIGQUIT信號設置爲忽略。如何在PHP中完成?
shell_exec()
將在殼產卵的過程:http://php.net/shell_exec
要處理,你將需要使用pcntl_signal()
,這就要求了pcntl擴展信號:http://php.net/manual/en/function.pcntl-signal.php
完整的例子,打開一個文件編輯和然後顯示了編輯的內容:
$fh = fopen('tmp_file', 'w');
fwrite($fh, "Hello!");
fclose($fh);
shell_exec("nano tmp_file > /dev/tty < /dev/tty");
$data = file_get_contents('tmp_file');
unlink('tmp_file');
echo "You entered: $data\n";
你需要輸入和輸出重定向到/dev/tty
使流程交互(otherwis它會掛起,取決於編輯器)。
哇,謝謝!這是我應該明確地瞭解* nix shell的一些事情...... – nikita2206 2013-03-24 12:30:06
什麼是對PHP的癡迷?你爲什麼認爲PHP適合這項任務? – 2013-03-22 16:26:09
我正在寫一個PHP命令,這就是爲什麼我要它在PHP中工作,沒有任何癡迷。 – nikita2206 2013-03-22 16:29:54
@ nikita2206通過這個問題,似乎對PHP很感興趣。其他編程語言可用於執行您所請求的內容 – 2013-03-22 16:31:28