将 Laravel 包含到自定义 PHP 脚本中并路由到控制器
Posted
技术标签:
【中文标题】将 Laravel 包含到自定义 PHP 脚本中并路由到控制器【英文标题】:Include Laravel into custom PHP script and routing to a controller 【发布时间】:2015-03-06 12:44:59 【问题描述】:假设有一个基于 Web 的 php 项目,它使用一个独立的框架,并且还包含一个带有 Laravel 4.2 的文件夹:
project/
laravel/ (Laravel install)
app/
routes.php
public/
index.php
index.php
test.php
.htaccess
.htaccess 文件将每个查询重写为独立框架的 index.php,除非请求了 PHP 脚本(例如,project/test.php)。
在这种情况下,test.php 包含 require laravel/public/index.php
以包含 Laravel 的 index.php 脚本。访问它的 URI 是 http://example.com/test.php
。
如何使用Laravel's routing 来了解这个脚本?我试过这个:
Route::get('/test.php', function()
echo 'success';exit;
);
但这不起作用(我已经尝试过 test.php 并且只是 test)。转储Route::getCurrentRoute()
输出:
object(Illuminate\Routing\Route)[126] protected 'uri' => string '/' (length=1) ... protected 'compiled' => object(Symfony\Component\Routing\CompiledRoute)[135] ... private 'staticPrefix' => string '/' (length=1) ...
是否可以访问 http://example.com/test.php
并让 Laravel 的路由看到它,就像请求了 /test
或 /test.php
一样,而不需要更改独立框架的 .htaccess 文件? p>
【问题讨论】:
我不明白您需要什么。你想通过 Laravel 提供 /test.php URL,即使它是服务器上的物理 .php 文件?那是行不通的。 Laravel 的重写规则明确地使物理文件优先于内部路由。反过来做:将其移动到非公共路径中,然后将其设置为正常的 Laravel 路由并需要来自外部应用程序的资源。 嗯,基本上,我想使用脚本 test.php 作为控制器的入口点。我想在 Laravel 中编写一个路由来将路由 /test.php 连接到控制器。 你为什么要这么做?你在 text.php 里面做什么? 因为我想了解是否可以使用 Laravel 的路由系统,可以在不接触其源代码的情况下以这种方式工作。基本上我不需要在 test.php 中做任何事情,只需要包括 Laravel 的 index.php。 你可以实现你的自定义路由类:github.com/pixeloution/laravel-custom-router 【参考方案1】:你不必强制使用 Laravel 路由,你可以用纯 PHP 绕过它:
if($_SERVER['REQUEST_URI'] === '/test.php')
exit('success');
但在您的情况下,您可能应该使用 .htaccess 将所有请求重定向到 Laravel,并在 Laravel 不处理该页面时回退到根 index.php:
App::missing(function($exception)
include('../../index.php');
exit;
);
【讨论】:
以上是关于将 Laravel 包含到自定义 PHP 脚本中并路由到控制器的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由
拦截 bash 脚本函数/系统调用并将它们包装到自定义函数中