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

时间:2018-06-25 21:59:57

标签: php .htaccess composer-php cpanel

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

std::vector<int> a = {1,2,3,4,5};
std::vector<int> b = {1,2,3,4,5};
std::vector<int>c;
std::transform(a.begin(),a.end(), b.begin(),
               std::back_inserter(c),
               [](const auto& aa, const auto& bb)
               {
                   return aa*bb;
               });
for(auto cc:c)
    std::cout<<cc<<std::endl;

我使用子域(api.mydomain.com)将其上传到了cpanel托管(位于api /)。我用cpanel制作了子域,然后首先将根文件夹设置为api / public,但没有用(500错误)。然后,我尝试将子域指向api /,但这也不起作用。我能做什么?我认为问题出在.htaccess文件中。

/
- /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

我对.htaccess或作曲者的了解不多,所以我没有做任何改动。谢谢。

1 个答案:

答案 0 :(得分:0)

很明显为什么它不起作用。查看您的规则:

#root .htaccess
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
  1. .htaccess文件中的第一条规则会重写对根目录的任何请求,例如www.example.comapi.example.com/到子文件夹/public
  2. 第二条规则对此进行了补充,并将任何其他请求重写到子目录/ public中,例如api.example.com/testapi.example.com/public/test

因此,有效地,这两个规则之一总是会触发。

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

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

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

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