php - 简单的 PHP API 在 Cpanel 中给出错误 500
问题描述
我按照本教程使用 PHP 制作了一个简单的 API。它在我的电脑上完美运行。我在源文件夹中添加了一些其他 php 文件,并在项目中添加了一个作曲家包(Firebase/JWT),因此创建了一个供应商文件夹和几个作曲家文件。现在项目文件夹如下所示:
/
- /plublic
-- .htaccess
-- index.php // requires src/functions.php
- /src
-- connection.php
-- functions.php // requires other src/.php files and JWT from composer
-- panel.php
-- responses.php
- /vendor
-- /composer // and files
-- /firebase // and files
-- autoload.php
.htaccess
composer.json
composer.lock
我使用子域(api.mydomain.com)将它上传到我的 cpanel 主机(在 api/)。我使用 cpanel 创建了子域,并首先将根文件夹设置为 api/public 但它不起作用(500 错误)。然后我尝试将子域指向 api/ 但这也不起作用。我能做些什么?我认为问题出在 .htaccess 文件中。
#root .htaccess
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
#/public .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我不太了解 .htaccess 或作曲家,所以我没有动任何东西。谢谢。
解决方案
很明显为什么它不起作用。看看你的规则:
#root .htaccess
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
- .htaccess 文件中的第一条规则重写根的任何请求,例如,
www.example.com
或对子文件api.example.com/
夹的请求/public
。 - 第二条规则对此进行了补充,并重写了对子目录 /public 的任何其他请求,
api.example.com/test
例如api.example.com/public/test
因此,有效地,这两条规则之一将始终触发。
由于您已将 api.example.com 的根目录设置为 /public,因此无法找到/public/public
子文件夹;因此,您会收到错误 500。
要解决此问题,您可以尝试删除根 .htaccess 中的两个规则,或者您可以将 /api 的根设置为不设置子文件夹。
public/.htaccess 文件有一个典型的单入口点配置,应该没问题。
始终在隐身模式下使用新的浏览器来测试更改。
推荐阅读
- python - 如何在其调用方法中定义带有布尔参数的自定义 keras 层?
- python - 在 Python 中搜索关键字,然后返回关键字
- c# - 使用子集合项的 Automapper 展平
- rest - 如何将 Marketo REST API 与 Postman 一起使用?
- firebase - 协程折叠功能和 Firestore 的问题
- algorithm - 以随机顺序执行 N 次测试以进行随机排列 [Python]
- python - 如何在 python 中使用 opencv-fisheye 模块对普通图像应用鱼眼效果
- python - 从 csv 文件读取数据时,Pandas drop_duplicates() 在向 DataFrame 添加一行后不起作用
- flutter - Webview 不能与 Flutter 中的动画一起使用
- javascript - 在select2中使用ajax时无法获取自定义属性值