【发布时间】:2018-02-05 21:29:01
【问题描述】:
我们运行的主网站不是用 Laravel 制作的。然而,这个网站上的一个特定脚本是用 Laravel 制作的。我们需要这个脚本(或者确切地说,它内部的一个特定视图)来从主网站(主要包括 HTML 的 PHP 文件)获取一些资源。当我们在 Laravel 应用程序中尝试包含这些资源时,我们不能——因为它们不存在于 Laravel 项目工作区中。这会导致文件不存在的错误。试图退出项目(../../../file.php)似乎也没有帮助。
我们以这种方式包含它:
<?php
include '~/template/nav.php';
?>
我们不希望将此文件包含到实际的 Laravel 项目中,因为这需要更新两次以确保它们保持相同。我们有什么办法可以在我们的视图中包含这个“外部”文件?所做的每一项研究似乎都建议将其添加到项目中,这只会导致更新管理量增加一倍。
干杯!
【问题讨论】:
-
您是否尝试过在 laravel 的公共文件夹中创建符号链接,并使用 include public_path('nav.php'); 包含符号链接
-
@michael 我没有。我想这会起作用 - 但我仍然对我们是否可以包含外部文件感到好奇。
-
你不能包含非项目文件,即使在非 laravel 项目中也不能包含,除非你在 php.ini 中设置 open_basedir 以允许 php 访问文档根目录之外的文件。你可以用你的 laravel 以同样的方式做到这一点,但是你必须提供完整的路径名,从你的服务器根目录开始。 /var/www/html/... 例如
-
@michael 非 laravel 项目基本上允许我从 PHP 解释器(在本例中为 public_html)可访问的文件夹中的任何位置包含 php 文件。在 Laravel 中,这不起作用,因为 Laravel 拒绝从其自己的子目录之外的任何内容中读取。我也尝试了一个符号链接,这似乎也失败了。 编辑 实际上,符号链接有效 - 但在这种情况下不会这样做,因为它现在将从错误的范围读取配置变量。我想我别无选择,只能创建一个副本。
-
@MarcusFrölander Laravel 使用 PHP,所以你的论点没有实际意义。你应该重新考虑你的整个结构,或者使用一个包。