编辑:此处是latest version of the builder和here'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
答案 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
。
在上面添加并修改了代码。