実行演算子
PHP は 1 種類の実行演算子、バッククォート (``
) をサポートします。
シングルクォートではないことに注意してください! PHP は、バッククォートの
中身をシェルコマンドとして実行しようとします。出力が返されます
(すなわち、出力を単にダンプするのではなく、変数に代入することが
できます) 。
バッククォート演算子の使用は shell_exec() と等価です。
<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
注意:
バッククォート演算子は、 shell_exec() が無効な場合は無効となります。
注意:
他の言語とは異なり、 ダブルクォートで囲まれた文字列の中でのバッククォート演算子には何の効力もありません。
+add a note
User Contributed Notes 3 notes
robert ¶
18 years ago
Just a general usage note. I had a very difficult time solving a problem with my script, when I accidentally put one of these backticks at the beginning of a line, like so:
[lots of code]
` $URL = "blah...";
[more code]
Since the backtick is right above the tab key, I probably just fat-fingered it while indenting the code.
What made this so hard to find, was that PHP reported a parse error about 50 or so lines *below* the line containing the backtick. (There were no other backticks anywhere in my code.) And the error message was rather cryptic:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /blah.php on line 446
Just something to file away in case you're pulling your hair out trying to find an error that "isn't there."
ohcc at 163 dot com ¶
8 years ago
You can use variables within a pair of backticks (``).
<?php
$host = 'www.wuxiancheng.cn';
echo `ping -n 3 {$host}`;
?>
paolo.bertani ¶
2 years ago
If you want to avoid situations like the one described by @robert you may want to disable `shell_exec` and -as a consequence- the backtick operator.
To do this just edit the `php.ini` file and add `shell_exec` to the `disable_functions` setting:
; This directive allows you to disable certain functions.
; It receives a comma-delimited list of function names.
; https://php.net/disable-functions
disable_functions = "shell_exec"
Then you can still use `exec()` to run terminal commands.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google