首页 文章

简单的PHP API在Cpanel中提供错误500

提问于
浏览
0

我跟着this tutorial用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或作曲家了解不多,所以我没有动过任何事情 . 谢谢 .

1 回答

  • 0

    很明显为什么它不起作用 . 看看你的规则:

    #root .htaccess
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
    
    • .htaccess文件中的第一个规则重写了root的任何请求,例如 www.example.comapi.example.com/ 到子文件夹 /public .

    • 第二条规则对此进行了补充,并重写了对子目录/公共的任何其他请求,例如: api.example.com/testapi.example.com/public/test

    因此,实际上,这两条规则中的一条将始终触发 .

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

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

    public / .htaccess文件具有典型的单入口点配置,应该没问题 .

    始终在隐身模式下使用全新浏览器来测试更改 .

相关问题