为什么我的PHP exec()无法在bash tidy命令中打开文件?

请忍受我(我只是学习如何使用 PHP).我无法弄清楚我的整洁错误是否与错误的wget命令或其本身有关.我以为我的wget命令是抓取远程文件并将其放入我服务器上的$link目录中…但似乎有些不对劲.

我试过了

>将$tidy_cmd更改为单引号
>将该行连接到“…”. $htmlDir. “/ *”;
>不包括“/ *”
>使用php tidy命令(注释掉…失败).

错误:

Error: Can’t open “app/HtmlPages/arl.server.com-2015_11_19_15:36:09/arl.server.com/index.php/art”

wget.php:

    $ip = $argv[1];

    // Get the current time for the filename
    $currentTime = date( 'Y_m_d_H:i:s' );
    $link = "app/HtmlPages/$ip" ."-". "$currentTime";             
    $htmlDir = "$link/$ip/index.php/art";

    // Use wget to download aaron.htm webpage
    $wget_cmd = "wget -P $link/ http://$ip/index.php/art/aaron.htm";

    exec ( $wget_cmd );

    // Clean up the HTML for every page.
    $tidy_cmd = "tidy -config tidy_config.txt -i -m $htmlDir/*";
    exec ( $tidy_cmd );

    //$tidy_config = file_get_contents( 'tidy_config.txt' );
    //$tidy = new tidy();
    //$tidy->parseFile( '$htmlDir/*.htm', $tidy_config );
    ...

最佳答案 看起来$htmlDir与您的源文件(即wget.php)相关,而它需要是来自文件系统根目录的绝对路径(例如,/ home / yourname / yourfolder /和/ so / on /).执行整理时,它无法读取文件,因为该文件不存在,即您提供了错误的路径.尝试从文件系统的根目录提供一个绝对路径,你应该好好去!

为了将来参考,通过创建仅包含有问题代码的测试文件来调试此类事情是有帮助的.在你的情况下,只是执行整洁的位.然后,您可以使用$php test_script.php在命令行上执行该文件,希望这将使您的调试更快更容易!

点赞