"没有这样的文件或目录"在localhost副本上

时间:2017-08-08 18:52:43

标签: php xampp copy localhost

编辑:我很确定这个问题与我无法访问的防火墙有关。标记Canis'回答正确,我会想出其他的东西,可能wget或只是手动刮取文件,并希望不需要重大更新。

编辑:此处是latest version of the builderhere's the output。构建目录具有适当的结构和大多数文件,但只有它们的名称和扩展名 - 其中没有数据。

我正在编写一个php脚本,在本地目录中搜索文件,然后抓取我的localhost(xampp),将相同的文件复制到build文件夹中(目标是在localhost上构建php,然后将其放在服务器为html)。

不幸的是我收到错误:public class Tile { private Surface tileImage; private Point tilePosition; public Rectangle tileColl; private int tileWidth = 40; private int tileHeight = 40; public int TileWidth { get { return tileWidth; } set { tileWidth = value; } } public int TileHeight { get { return tileHeight; } } public Rectangle TileColl { get { return tileColl; } set { tileColl = value; } } public Tile(Point position) { tileImage = new Surface("tile.png"); tilePosition = position; tileColl = new Rectangle(tilePosition.X, tilePosition.Y, tileWidth, tileHeight); } public void Draw(Surface showTiles) { showTiles.Blit(tileImage, tilePosition); } }

这是一个例子 - 本地目录中的每个文件都会回吐相同的错误。源地址是正确的(我可以从错误日志中的地址到localhost上的文件)并正确构建本地目录 - 只是将文件移动到它不起作用。完整代码为here,最相关的部分为:

Warning: copy(https:\\localhost\intranet\builder.php): failed to open stream: No such file or directory in C:\xampp\htdocs\intranet\builder.php on line 73

1 个答案:

答案 0 :(得分:1)

您正在尝试使用URL来遍历本地文件系统目录。 URL仅供Web服务器了解Web请求。 如果你改变这个,你会有更多的运气:

copy(https:\\localhost\intranet\builder.php)

到此:

copy(C:\xampp\htdocs\intranet\builder.php)

修改

根据您在评论中的其他信息,我了解您需要生成静态HTML文件,以便在仅静态的Web服务器上进行托管。这不是真正复制文件的问题。它通过网络服务器访问脚本生成的HMTL。

实际上你可以通过几种不同的方式来做到这一点。我不确定生成器脚本是如何工作的,但似乎该脚本试图从PHP文件的负载中复制假定的输出。

要从PHP文件中获取生成的内容,您可以使用命令行php命令执行类似c:\some\path>php some_php_file.php > my_html_file.html的脚本,或使用网络服务器的强大功能为您执行此操作:

<?php

$hosted = "https://localhost/intranet/";              <--- UPDATED

foreach($paths as $path)
{
    echo "<br>";
    $path = str_replace($localroot, "", $path); 
    $path = str_replace("\\","/",$path);    <--- ADDED
    $source = $hosted . $path;
    $dest = $localbuild . $path;

    if (is_dir_path($dest))
    {
        mkdir($dest, 0755, true);
        echo "Make folder $source at $dest. <br>";
    }
    else
    {
        $content = file_get_contents(urlencode($source));
        file_put_contents(str_replace(".php", ".html", $dest), $content);
        echo "Copy $source to $dest. <br>";
    }
}

在上面的代码中,我使用file_get_contents()从您使用的网址https://...中读取html,在这种情况下,与copy()不同,将调用网络服务器,触发用于生成输出的PHP引擎。

然后我将纯HTML写入$dest文件夹中的文件,将.php替换为文件名中的.html

修改

在上面添加并修改了代码。