我想在Laravel的/ public文件夹中创建一个.html文件

时间:2019-01-03 17:26:31

标签: php fopen laravel-5.7

我正在尝试从文本区域创建一些HTML代码并将其存储到文件中

如果PHP文件中的

fopen方法尚不存在,但无法在Laravel 5.7中正常工作,则会创建该文件

这是我的演示代码

$plugin_html_file_nm = "plugin_html".time().".html";
$html_plugin = fopen("/public/plugin_html_storage/".$plugin_html_file_nm,"w");
fwrite($html_plugin,$request->input('plugin_html'));
$plugin->plugin_html = $plugin_html_file_nm;

给出此错误fopen(/public/plugin_html_storage/plugin_html1546535810.html): failed to open stream: No such file or directory

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

Laravel提供了一个帮助者public_path()

  

public_path函数将返回标准路径。   公共目录。您也可以使用public_path函数   在公共场所生成给定文件的标准路径   目录

也许您需要添加完整路径。所以:

$html_plugin = fopen(public_path("plugin_html_storage/.$plugin_html_file_nm"),"w");

此外,请确保您具有书面特权。如PHP documentation所述:

  

PHP必须可以访问该文件,因此您需要确保文件访问权限允许该访问。

答案 1 :(得分:0)

默认情况下,您的laravel应用是从公共目录提供的。

因此,为了实现您要执行的操作,请替换

myTable <- tableGrob(
  df, 
  rows = NULL, 
  theme = ttheme_default(core = list(bg_params = list(fill = "grey99")))
)
grid.draw(myTable)

具有:

$html_plugin = fopen("/public/plugin_html_storage/".$plugin_html_file_nm,"w");

注意:应该在 public 目录中创建 plugin_html_storage 目录,以确保操作不会失败。

答案 2 :(得分:0)

你只需要添加相对路径。

$html_plugin = fopen("../public/plugin_html_storage/".$plugin_html_file_nm,"w");