[英]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]
api.example.com/
根目录的任何请求(例如www.example.com
或api.example.com/
到子文件夹/public
。 api.example.com/public/test
api.example.com/test
为api.example.com/public/test
因此,有效地,这两个规则之一将始终有效。
由于您已经将api.example.com的根目录设置为/ public,因此无法找到/public/public
子文件夹。 因此,您将得到一个错误500。
要解决此问题,您可以尝试删除.htaccess根目录中的两个规则,也可以将/ api的根目录不设置为子文件夹。
public / .htaccess文件具有典型的单个入口点配置,应该可以。
始终以隐身模式使用全新的浏览器来测试更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.