Я хочу создать .html файл в / public папке Laravel - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь создать и сохранить некоторый HTML-код из текстовой области в файл.

fopen метод в PHP создаст файл, если этот файл еще не существует, но он не работает в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

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Ваше приложение laravel по умолчанию обслуживается из общедоступного каталога.

Поэтому, чтобы добиться того, что вы пытаетесь сделать, замените

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

на:

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

Примечание. Каталог plugin_html_storage должен быть создан в каталоге public , чтобы операция не завершилась неудачей.

0 голосов
/ 03 января 2019

Laravel предоставляет помощника public_path()

Функция public_path возвращает полный путь к общедоступному каталогу.Вы также можете использовать функцию public_path для генерации полного пути к заданному файлу в публичном каталоге

Возможно, вам нужно добавить полный путь.Итак:

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

Также убедитесь, что у вас есть права на запись.В документации PHP указано:

Файл должен быть доступен для PHP, поэтому необходимо убедиться, что разрешения на доступ к файлу разрешают этот доступ.

...