【问题标题】:How to store templates for non-php files in Laravel?如何在 Laravel 中存储非 php 文件的模板?
【发布时间】:2018-08-09 05:43:08
【问题描述】:

我们可以使用 Laravel 中的blade 模板引擎存储PHP 模板文件。但是,我想在远程服务器上创建一个配置文件,每个配置文件超过 20-30 行。

到目前为止,我一直在使用 Perl 进行此操作。我曾经执行 Perl 文件,该文件用于将内容转储到一个文件中,并且我曾经将变量作为参数传递。

现在,我想在不使用 Perl 的情况下执行此操作。我尝试寻找解决方案但失败了。为了便于理解,这就是我正在尝试做的事情!

我想在远程服务器上创建以下配置文件(仅作为示例)。

Example.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>

这里,example.comwww.example.com 在每个配置文件中都会有所不同。

现在,我想将此文件从我的 laravel 应用程序创建到远程服务器。 有什么方法可以存储这个配置文件的模板,并且可以编译并将文件放到远程服务器上?

我知道如何将这个文件放到远程服务器上。我只想知道存储模板并在需要时对其进行自定义的最佳方式。

【问题讨论】:

  • 只是好奇,您想管理配置和自动化部署吗?因为有更好的工具,例如:Ansible、Terraform、Chef、Puppet...
  • 您的问题不是很清楚,您能否为此添加一个示例或上下文。根据我对您的问题的理解,@Razor 是对的,您应该使用适当的工具来执行此操作,您所做的看起来像是一个糟糕的设计,并且可能导致重大的安全问题
  • @MauthieuAuclair 示例已经存在。请再次阅读问题...
  • 仔细考虑清理/验证此功能的输入。如果恶意用户设法访问编写模板的端点,他们可能会重写配置以允许各种讨厌的事情。也就是说,这是一个巧妙的想法。我们也可以使用 Laravel 的sftp filesystem driver 自动将输出文件上传到远程服务器。

标签: php laravel shell


【解决方案1】:

您可以将其放入 blade 模板中,例如 server-config.blade.php,然后当您想将其放置在您只需调用的服务器上时:

\File::put('place-on-the-server.conf', view('server-config')->render());

它将基于刀片模板生成内容(因此您可以将变量传递给此模板)。

【讨论】:

  • 使用模板引擎来创建服务器配置文件真的是个好主意吗?
  • 为什么不呢?正如您提到的,它是一个“模板”引擎。它旨在创建模板 - 不仅仅是前端模板。
  • 感觉不对,但是我的“感觉”不是法律(感谢上帝),所以我问这是否真的是个好主意:)
  • 将配置文件授予php-fpm 文件系统权限并不是一个好主意,但您可以使用php-cli 运行它,因为权限属于运行它的用户(例如根)。
【解决方案2】:

据我了解,在您的情况下,您是否有一个人们可以请求网站的网站,并且您想在应用程序中自动生成虚拟主机文件,然后将其传输到远程服务器?

如果是上述情况,那么您有很多选择。

1 - 菲利普的答案

2 - 控制台命令

您可以随意生成文件。我个人在我的 laravel 应用程序中有一个结构,我保存空白文件(模板)。然后我将其复制过来,并通过控制台命令将其替换为给定的参数,Artisan Commands

3 - 服务器脚本

另一种方法是使用 Laravel Envoy。您将在服务器上有一个脚本,该脚本将生成所需的文件,只需在 laravel 的 Envoy 文件中调用一个函数即可让它执行它。这样做的好处是您可以在服务器上专门为 envoy 创建一个新用户,并且只允许它运行特定的命令。这种方式几乎不会弄乱服务器。Envoy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2022-01-24
    • 2014-07-23
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多