php - Laravel lumen 使用共享主机的内部服务器错误 500?
问题描述
我是 Laravel/lumen 的新手。我制作了一个简单的启动代码来使用控制器函数返回响应。它在我的本地服务器上运行良好,但是当我使用共享主机时,到控制器功能的路由会出现 500 内部服务器错误。任何不使用控制器功能的东西都有效。就像是
$router->get('/', function () use ($router) {
return phpinfo();
});
返回 php 信息。使用 IONOS 托管。不使用任何数据库连接。我在 StackOverflow 中尝试了几个类似的答案,但无法弄清楚。域指向项目的公用文件夹。尝试使用 FTP 和 ssh 安装。两者结果相同。
内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。
请联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。
服务器错误日志中可能提供有关此错误的更多信息。
此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。
存储/日志中没有错误信息
控制器代码... <?php
namespace App\Http\Controllers;
class ExampleController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
public function profile(){
return response('hello! Controller Works...');
}
//
}
路由器代码..
<?php
/** @var \Laravel\Lumen\Routing\Router $router */
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->get('/', function () use ($router) {
return $router->app->version();
});
$router->get('profile', [
'as' => 'profile', 'uses' => 'ExampleController@profile'
]);
.htaccess 文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
删除 .htaccess 将给出未找到的错误。.env 文件
APP_NAME=Lumen
APP_ENV=production
APP_KEY=<my generated key>
APP_DEBUG=false
APP_URL=http://<my domain>
APP_TIMEZONE=UTC
LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
解决方案
搜索了一整天后,发现问题出在 .htaccess 文件上。
它应该RewriteRule ^ /index.php [L]
代替RewriteRule ^ index.php [L]
根据文章,大多数 500 内部服务器错误与 .htaccess 文件有关。所以对于任何新手来说,都有些头疼。
推荐阅读
- html - 颜色不会更改对应于纯 CSS 选项卡布局中选中的单选
- python - 页面上未修改的 Django ModelForm 小部件
- javascript - 从动态输入字段中获取单个输入值
- javascript - 如何使用 javascript 在 iframe 中获取控制台消息?
- javascript - 如何使用时间间隔从服务器获取数据而不刷新角度组件中的页面?
- javascript - 如何刷新 node.js HTTP 服务器中的浏览器页面?
- sql - PLS-00382:表达式类型错误。PL/SQL:语句被忽略
- javascript - 在 Spring 中创建条目会引发不受支持的媒体类型
- java - Hibernate Spring Framework Transactional No Transaction In Progress
- python - 从其他脚本访问主函数中的变量