exec功能不起作用

时间:2010-02-25 20:04:54

标签: php exec

我从http://kevin.vanzonneveld.net/techblog/article/convert_anything_to_tree_structures_in_php/找到了这段代码,但是我找不到它。我正在开发WIndow环境,我使用的路径是/ sellable,其中sellable是工作文件夹中的文件夹:

if(exec("find /etc/php5", $files)){
    // the $files array now holds the path as it's values,
    // but we also want the paths as keys:
    $key_files = array_combine(array_values($files), array_values($files));

    // show the array
    print_r($key_files);
}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您很难在Windows机器上获得find命令或/etc/php5目录。使用PHP的内置glob DirectoryIterator RecursiveDirectoryIterator(感谢Pascal :)代替。 Glob无法本机迭代子文件夹,但链接页面上的User Contributed Notes中有简单的globr实现。迭代器可以原生地执行此操作。

答案 1 :(得分:1)

find是Linux命令(外部Linux程序)。
这意味着它不会出现在Windows上......

/etc/php5看起来像是目录的UNIX路径;并且看起来不像是Windows目录的路径。

所以,这里有两个问题:

  • 你必须找到...... find的等价物。
    • 也许使用像cygwin这样的东西?
  • 您必须调整路径,以使其适合您的系统


但是我会说一个只有PHP的解决方案可能会更好:有一些函数和类可以让你搜索文件并迭代文件系统 - 它可以在Linux和Windows,不依赖于任何外部程序。

例如,要遍历目录,您可能需要查看RecursiveDirectoryIterator类 - 也可能DirectoryIterator

答案 2 :(得分:0)

我还没有尝试过,但“dir / s / b c:\ somedir”可以作为Windows上“查找”的快速替代品。更好(更便携)的解决方案是使用RecursiveDirectoryIterator或php的opendir / readdir函数递归列出目录中的所有文件。

在此处查看示例代码,例如: http://php.net/manual/en/function.readdir.php