【问题标题】:External PHP Include in LaravelLaravel 中的外部 PHP 包含
【发布时间】: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,所以你的论点没有实际意义。你应该重新考虑你的整个结构,或者使用一个包。

标签: laravel laravel-5


【解决方案1】:

刚刚遇到同样的问题。我的 Laravel 项目是一个需要包含外部 php 文件的 API。所以我所做的是指定整个路径:

include($_SERVER['DOCUMENT_ROOT'].'/../../my_example_file.php');

$_SERVER['DOCUMENT_ROOT'] 将引导你到 Laravel 的公共文件夹。

【讨论】:

  • 在这种情况下,我给你接受的答案,因为你找到了让它工作的方法!迟到总比没有好:)
猜你喜欢
  • 2017-05-11
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
相关资源
最近更新 更多