我试图最终从PHP中的tar存档中提取一些文件,但是我的简单测试脚本在第一部分失败了,就是简单地列出存档中的文件。
这个测试脚本失败有什么理由吗?
我看到的输出是:
> -sh-3.2$ php showfile.php /var/www/vhosts/smartphonesoft.com/httpdocs/fred/epf/itunes20100825.tbz
> tar: Old option `f' requires an
> argument. Try `tar --help' or `tar
> --usage' for more information.
我的简单PHP脚本是:
<?php
foreach (glob("/var/www/vhosts/smartphonesoft.com/httpdocs/fred/epf/itunes*.tbz") as $file) {
}
$path_parts = pathinfo($file);
$tarfile = $path_parts['filename'];
echo $file . "\n";
exec('tar tvf $file',$ret);
?>
答案 0 :(得分:4)
你在exec()函数中严重放置了括号,({})和错误的引号:
<?php
foreach (glob("/var/www/vhosts/smartphonesoft.com/httpdocs/fred/epf/itunes*.tbz") as $file) {
$path_parts = pathinfo($file);
$tarfile = $path_parts['filename'];
echo $file . "\n";
exec("tar tvf $file",$ret);
}
&GT;
(使用'引号不会将字符串中的变量$file
替换为您想要的文件。)
编辑:根据Frxstrem的评论,永远不要忘记转义文件名(如果它包含例如空格,上面的代码将不起作用)。
exec("tar tvf ".escapeshellarg($file), $ret);