可以通过三个PHP函数运行外部命令
system();
exec();
shell_exec();
但他们的区别是什么?尽管它们具体应用,但在大多数情况下,可以同样使用.我很想知道哪些是可以同样使用的首选.例如,对于解压缩文件或压缩文件夹(使用tar命令),哪一个是首选(可能从性能的角度来看)?
更新:在另一个问题中,我发现了一个非常有用的链接,描述了这些功能的不同方面.我在这里分享链接,因为其他人可能会用来更好地了解安全问题和其他方面.
我期待通过PHP发送SSH.什么是最好/最安全的方式?我知道我能做到:
shell_exec("SSH user@host.com mkdir /testing");
还有什么更好的?那感觉很'顽皮':).
是否有if用于bash脚本的所有开关的列表?有时我看到有人使用它,我想知道他们正在使用的切换实际上是做什么的.
例子就是-z这一个.我知道如何使用它,但我不知道它是从哪里得到的.
if [ -z "$BASH_VERSION" ]; then
    echo -e "Error: this script requires the BASH shell!"
    exit 1
fi
任何参考,指南,帖子,答案将不胜感激.
我正在shell_exec()第一次使用.我正在尝试使用ffmpeg shell脚本在我的服务器上转换一些视频文件.
当我在浏览器中的下面的代码时,它返回NULL:
var_dump(shell_exec("ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4"));
但是,当我在终端中运行等效代码时:
> ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4
我收到了大量有用的信息,这些信息以错误结束 "At least one output file must be specified"
为什么这些信息没有传回我的PHP脚本,所以我可以回应它?
我有以下功能,到目前为止我没有工作.我想ping一个IP地址,然后回显IP是否存在.
function pingAddress($ip){
    $pingresult = shell_exec("start /b ping $ip -n 1");
    $dead = "Request timed out.";
    $deadoralive = strpos($dead, $pingresult);
    if ($deadoralive == false){
        echo "The IP address, $ip, is dead";
    } else {
        echo "The IP address, $ip, is alive";
    }
}
当我使用示例调用此函数时:
pingAddress("127.0.0.1")
回声结果总是"死" - 无论如何.
有人可以在我出错的地方帮助我吗?和/或者有更好的方法来做同样的结果吗?
非常感谢.
更新:已修改代码以包含双引号但仍获得相同(不正确)的结果.
我使用shell_exec方法从PHP调用test.sh.
$my_url="http://www.somesite.com/";
$my_refer="http://www.somesite.com/";
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
但是,命令行脚本说它只收到一个参数:/tmp/my_script.php
当我将呼叫更改为:
码:
$page = shell_exec('/tmp/my_script.php {$my_url} {$my_refer}');
它说它接收了3个参数,但是argv [1]和argv [2]是空的.
当我将呼叫更改为:
码:
$page = shell_exec('/tmp/my_script.php "http://www.somesite.com/" "http://www.somesite.com/"');
该脚本最终按预期接收所有3个参数.
您是否始终只需使用脚本发送带引号的文本,并且不允许发送像$ var这样的变量?或者有一些特殊的方式你必须发送$ var?
我正在尝试从PHP执行powershell脚本,但它似乎不起作用.
脚本'newEvent.ps1'在Exchange服务器上创建一个事件.
$psPath = "powershell.exe";
$psDIR = "C:\\wamp\\www\\ant\\assets\\ps\\";
$psScript = "newEvent.ps1";
$runScript = $psDIR. $psScript;
$runCMD = $psPath." ".$runScript." 2>&1"; 
echo "\$psPath  $psPath <br>";
echo "\$psDIR  $psDIR <br>";
echo "\$psScript  $psScript <br>";
echo "\$runScript  $runScript <br>";
echo "\$runCMD   $runCMD  <br>";
exec( $runCMD,$out,$ret);
echo "<pre>";
print_r($out);
print_r($ret);
echo "</pre>";
它输出:
$psPath powershell.exe
$psDIR C:\wamp\www\ant\assets\ps\
$psScript newEvent.ps1
$runScript C:\wamp\www\ant\assets\ps\newEvent.ps1
$runCMD powershell.exe C:\wamp\www\ant\assets\ps\newEvent.ps1 2>&1
Array
(
    [0] => File C:\wamp\www\ant\assets\ps\newEvent.ps1 cannot be loaded because the execut
    [1] => ion of scripts is disabled …有很多人有类似的问题,但没有人回答他们的问题.我在PHP中启用了IMAP,使用了所有正确的信息.我不知道我哪里出错了.
这是我的代码:
$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}'; 
$username = 'emailaddress@gmail.com'; $password = 'password'; 
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
print_r(imap_errors());
除以下情况外不返回任何错误:
警告:imap_open()[function.imap-open]:无法在/home/a8066360/public_html/test/imap.php上打开流{imap.gmail.com:995/imap/ssl/novalidate-cert} 6
无法连接到Gmail:无法连接到gmail-imap.l.google.com,995:连接已超时
我注意到如果我将单引号更改为`
出于安全原因,shell_exec()已被禁用...
请帮忙!!!
我正在使用appjs*,我想执行一个命令来打开一个文件夹.
var path = __dirname + '/folder to open/'; 
// path = C:\Program Files\myapplication/folder to open/
require("child_process").exec("start " + path);
找不到文件C:\ Program
我已经试图逃离那些没有用的空间.
var path = __dirname + '/folder to open/'; 
path = path.replace(' ', '\ ');
// path = C:\Program Files\myapplication/folder to open/
require("child_process").exec("start " + path);
当我把路径放在引号之间时,没有打开文件夹,只有另一个提示.
var path = "\"" + __dirname + "/folder to open/\"";
path = path.replace(' ', '\ ');
// path = "C:\Program Files\myapplication/folder to open/"
require("child_process").exec("start " + …我在我的github存储库中创建了一个webhook,它在我的实时服务器上的hook url上发布,用于运行pull命令来更新服务器上的repo文件.
问题是我创建的钩子文件位于/var/www/site/web/hookfile.php(帖子请求就在那里.我也得到了身体响应)
我的repo文件在/ var/www/git-repo /
当我将任何东西推送到我的github存储库时,它不会更新git-repo.我使用终端及其工作运行此命令.
cd /var/www/git-repo && git pull
但通过我的PHP文件它无法正常工作
shell_exec('cd /var/www/git-repo && git pull')
shell-exec ×10
php ×8
shell ×3
bash ×1
exec ×1
ffmpeg ×1
git ×1
github ×1
gmail ×1
if-statement ×1
imap ×1
node.js ×1
ping ×1
powershell ×1
repository ×1
ssh ×1
system ×1