Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php从php脚本的输出生成静态html文件_Php_File_Static_Get - Fatal编程技术网

如何使用php从php脚本的输出生成静态html文件

如何使用php从php脚本的输出生成静态html文件,php,file,static,get,Php,File,Static,Get,我想从一个php文件生成一个静态html页面,并从另一个php脚本保存它。该脚本运行一系列echo函数,当在浏览器中查看时,这是一个很好的html页面。但当我运行file_get_contents时,它会将该文件作为文件系统中的文件打开,而不是作为url中的文件打开 我是否需要以localhost/site/categories.php的方式调用file\u get\u contents?我怎样才能找到这条路?这是错误的代码: <?php $file = file_get_contents

我想从一个php文件生成一个静态html页面,并从另一个php脚本保存它。该脚本运行一系列echo函数,当在浏览器中查看时,这是一个很好的html页面。但当我运行file_get_contents时,它会将该文件作为文件系统中的文件打开,而不是作为url中的文件打开

我是否需要以localhost/site/categories.php的方式调用file\u get\u contents?我怎样才能找到这条路?这是错误的代码:

<?php
$file = file_get_contents("categories.php");
file_put_contents("categories.html", $file);
?>

要获得完成的输出,您需要使用PHP url包装器功能并通过Web服务器请求它。那么就很容易做到:

copy("http://localhost/site/categories.php", "categories.html");

我相信你可以:

$file = file_get_contents("http://localhost/site/categories.php");

但是,必须启用文件获取内容()才能读取URL。

是-以本地主机方式运行文件获取内容-如果您的服务器配置正确,它将不会长途跋涉到internet,并将以高效的方式获取您的结果,即使在您自己的域名上托管

<?php
$file = file_get_contents("http://yourserver.com/site/categories.php");
file_put_contents("categories.html", $file);
?>

出于安全原因,我不会使用php来完成。更好的方法是使用ssh将文件复制到所需的远程服务器:

php script.php | ssh you@remotehost "cp - /path/to/static/file.html

我可能忽略了这里的要点,但也可以将另一个PHP文件包含在内,直接使用它按需创建输出,而不是在流程的该阶段使用Web服务器。

对于我来说,webhook使用它创建另一个API驱动的文件。它用于减少API请求的数量。

非常有效!:)进一步澄清一下:第二个参数必须是绝对路径,例如:/home/user/public\u html/html\u at_root.html。我没有设法做的事情是传递额外的参数,比如会话数据,所以我只是在第一个参数中用GET方法传递它们。我想知道是否有更好的方法来实现这一点……我使用了这个函数,我的文件被锁定,并且锁定不在主机环境中打开,而“copy()”方法则没有,无论是与显式域还是本地主机一起使用。