実行演算子

PHP は 1 種類の実行演算子、バッククォート (``) をサポートします。 シングルクォートではないことに注意してください! PHP は、バッククォートの 中身をシェルコマンドとして実行しようとします。出力が返されます (すなわち、出力を単にダンプするのではなく、変数に代入することが できます) 。 バッククォート演算子の使用は shell_exec() と等価です。

<?php
$output 
= `ls -al`;
echo 
"<pre>$output</pre>";
?>

注意:

バッククォート演算子は、セーフモード が有効な場合 もしくは shell_exec() が無効な場合は無効となります。

注意:

他の言語とは異なり、 ダブルクォートで囲まれた文字列の中でのバッククォート演算子には何の効力もありません。

マニュアルの システムプログラムの実行popen(), proc_open(), そして PHPをコマンドラインから使用する も参照してください。

add a note add a note

User Contributed Notes 2 notes

up
103
robert
13 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."
up
46
ohcc at 163 dot com
3 years ago
You can use variables within a pair of backticks (``).

<?php
    $host
= 'www.wuxiancheng.cn';
    echo `
ping -n 3 {$host}`;
?>
To Top