繁体   English   中英

简单的PHP API在Cpanel中给出错误500

[英]Simple PHP API gives error 500 in Cpanel

我按照本教程制作了一个简单的PHP API。 它在我的计算机上完美运行。 我在源文件夹中添加了其他一些php文件,并在项目中添加了composer程序包(Firebase / JWT),因此创建了一个vendor文件夹和几个composer文件。 现在,项目文件夹如下所示:

/
- /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]
  1. .htaccess文件中的第一条规则api.example.com/根目录的任何请求(例如www.example.comapi.example.com/到子文件夹/public
  2. 第二条规则对此进行了补充,并将任何其他请求重写到子目录/ public,例如,将api.example.com/public/test api.example.com/testapi.example.com/public/test

因此,有效地,这两个规则之一将始终有效。

由于您已经将api.example.com的根目录设置为/ public,因此无法找到/public/public子文件夹。 因此,您将得到一个错误500。

要解决此问题,您可以尝试删除.htaccess根目录中的两个规则,也可以将/ api的根目录不设置为子文件夹。

public / .htaccess文件具有典型的单个入口点配置,应该可以。

始终以隐身模式使用全新的浏览器来测试更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM