我已经为此工作了好几天了,我正要拔掉头发。
目标:在我的 LAMP 服务器上的特定子目录中部署 Slim4,并通过简单的 URL 访问。
结构: 服务器上有几个我的 Web 应用程序实例,应该为所有实例复制设置;结构很简单:
/var/www/company1.com/app
- 这个“app”文件夹包含网站的主要index.php,以及其他各种文件夹。例如。/var/www/company1.com/app/index.php => https://company.com/index.php
- 有一个名为“api”的文件夹,我想在其中加载 Slim4。我真的不介意这个文件夹的结构和深度。我的工作是基于这是作曲家文件所在的位置。
- 最终结果应该是客户可以通过调用https://company1.com/api访问 api
我正在使用 openapi-generator 和 Pet Store yaml 文件。跑步:
openapi-generator-cli generate -i petstore.yaml -g php-slim4 -o /var/www/company1/api/
然后,我按照说明中的说明运行composer install
并设置了config.inc.php
文件。
但是,当我导航到http://company1.com/api时,每次都会遇到同样的问题:
404 Not Found Type: Slim\Exception\HttpNotFoundException Code: 404 Message: Not found. File: /var/www/company1.com/app/api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php Line: 91 Trace: #0 /var/www/company1.com/app/api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(58): Slim\Middleware\RoutingMiddleware->performRouting() #1 /var/www/company1.com/app/api/vendor/slim/slim/Slim/MiddlewareDispatcher.php(147): Slim\Middleware\RoutingMiddleware->process()
它继续......!
我想不通这个问题。这个问题似乎很常见,因为有很多关于它的帖子,所以我确信我错过了一些非常简单的东西。
我尝试了以下方法:
设置基本路径
$app->setBasePath("/api");
创建 /public/ 文件夹并将 index.php 文件移动到那里,然后根据以下说明创建两个不同的 .htaccess 文件: https ://akrabat.com/running-slim-4-in-a-subdirectory/
按照说明使用基本路径 https://github.com/selective-php/basepath
似乎都不起作用!我究竟做错了什么?
我已经能够成功加载 Slim4 Skeleton 应用程序,但是我想使用 openapi-generator 以便我可以让它根据我的 openapi yaml 规范自动准备所有 php 文件。
任何关于提示的想法将不胜感激!