【发布时间】:2020-02-22 12:32:13
【问题描述】:
关于这个应用程序的一切都在我的本地服务器上运行良好,但拒绝远程工作。如果我访问应用程序 www.mysite.com。它总是显示内部服务器错误。虽然我在 web.php 中没有任何路由,但我希望重定向回 404 not found 页面,但没有这样做,但它在 localhost 上。
另一个主要问题是,我在 api.php 中有许多路由,如果我将数据发送到任何路由,它们会接受数据,甚至可能将它们保存在必要的数据库中,但是它永远不会返回我在每次成功操作后定义的 json 响应。即使操作成功,我总是得到的响应是 500 内部服务器错误。我在这个问题上已经讨论了两个多星期了。
我在服务器上使用 PHP 7.2
这是我的 .htaccess 文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /
# 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>
api.php
<?php
Route::group(['prefix' => 'user', 'namespace' => 'User'], function () {
Route::post('/login', 'UserAuthController@userLogin');
Route::post('/signup', 'UserAuthController@userSignup');
});
UserController.php
public function userSignup(Request $request)
{
$rules = [
'name' => 'required|string|max:200',
'password' => 'required|between:8,100|confirmed',
'phone' => 'unique:users|required|digits:11|numeric',
'email' => 'unique:users|required|email',
];
$validator = Validator::make($request->all(), $rules);
$code = mt_rand(100000, 900000);
$hCode = FacadesHash::make($code);
if ($validator->passes()) {
$user = User::create([
'name' => $request['name'],
'email' => $request['email'],
'phone' => $request['phone'],
'otp' => $hCode,
'password' => FacadesHash::make($request['password']),
]);
$data = [
'name' => $request['name'], 'subject' => 'Email Confirmation',
'view' => 'mails.emailconfirm', 'code' => $code
];
return response()->json(['success' => true, 'status' => 200, 'message' => 'Your account has been created successfully and an OTP code has been sent to your email'], 200);
} else {
return response()->json(['success' => false, 'status' => 200, 'message' => $validator->errors()->first()], 200);
}
}
例如,注册路线运行良好,但永远不会返回我指定的 Json 响应,即使一切顺利,它也会返回 500 内部服务器错误。
如果一切顺利,我的 storage/log 中不会记录任何错误并且我没有得到响应。但是如果操作不成功,我确实会看到错误。
所有文件夹都有 777 权限,我也多次清除所有缓存
【问题讨论】:
-
你能检查php的错误日志吗?也许在
/var/log中,除非您有自定义配置。如果您说它有时会执行您的代码但仍返回 500,那么我可能会考虑一些中间件,它试图在请求或某些事件之后执行某些操作。最重要的是,服务器上可能缺少一些 php 模块。让我们尝试检查是否可以获得日志消息。 -
我找到了以下错误日志,您让我检查 [Sat Feb 22 14:37:06.006557 2020] [http:error] [pid 26129:tid 47139616982784] [c lient 105.112.178.154: 24113] AH02429:响应标头名称“Access-Control-Allow -Origin”包含无效字符,正在中止请求
-
很高兴我能帮上忙。如果您喜欢该评论 - 或对 SO 的任何其他评论 - 那么您也可以将其投票为“有帮助”。您可以在左侧的评论旁边找到它。您将看到一个“upvote”图标和一个“flag”图标,这意味着您可以投票或举报评论。