gpt4 book ai didi

php - 在现有的 apache web 服务器上运行 slim 框架

转载 作者:行者123 更新时间:2023-12-03 20:17:19 25 4
gpt4 key购买 nike

我是 slim 框架的新手。目前在我现有的位于 centos 7 上的网络服务器上,我正在运行其他基于 php 的应用程序。所以目前我的目录结构是这样的。

var/www/html
phpapp1
phpapp2
apislim

我创建的 apislim 文件夹是用于 slim 框架的。
以下是我所做的确切步骤是
1. composer create-project slim/slim-skeleton
2. 我将 slim-skeleton 文件夹重命名为 apislim
3.我确保所有者是 apache chown -R apache:apache apislim
4. 在 httpd.conf 中,我确保将 AllowOverride 启用为 All
<Directory "/var/www">
AllowOverride All
# Allow open access:
Require all granted
Options -Indexes
</Directory>

同样在下面我启用了所有
<Directory "/var/www/html">   
Options -Indexes -FollowSymLinks
AllowOverride All
</Directory>
  • 在 apislim/public 文件夹中,我有这个 .htaccess 文件,如下所示。

    重写引擎开启

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.)::\2$
    重写规则 ^(.) - [E=BASE:%1]

    RewriteCond %{REQUEST_FILENAME} !-f
    重写规则 ^(.*)$ %{ENV:BASE}index.php [QSA,L]
  • 我在公共(public)文件夹中还有 index.php 文件,该文件还链接到路由的 src 和主文件夹 apislim 我创建了另一个 .htaccess 文件并添加了这个。

    重写引擎开启
    RewriteRule ^$ public/[L]
    RewriteRule (.*) public/$1 [L]

  • 现在的问题是我希望我现有的应用程序与这个基于 slim 框架的 rest api 一起工作。所以当我去这个链接
    http://*.*.*.*/apislim/
    http://*.*.*.*/apislim/public/
    http://*.*.*.*/apislim/public/index.php

    这两种方法都不起作用,都给我 403 禁止。然后我检查错误日志,它显示有关 FollowSymLinks 的错误
    所以我加了
    选项 -Indexes +FollowSymLinks
    进入

    所以我现在得到的下一个错误是 500 间隔服务器错误。

    最佳答案

    为了让您的 Slim 3 应用程序在子目录中工作,以下步骤是必需的。

    目录结构:

  • public/ Web 服务器文件(DocumentRoot)
  • .htaccess前端 Controller 的 Apache 重定向规则
  • index.php前端 Controller
  • .htaccess内部重定向到 public/目录

  • 文件内容: .htaccess :
    RewriteEngine on
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]

    文件内容: public/.htaccess :
    # Redirect to front controller
    RewriteEngine On
    # RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]

    将此容器条目添加到文件中: dependencies.php :
    // Activating routes in a subfolder
    $container['environment'] = function () {
    $scriptName = $_SERVER['SCRIPT_NAME'];
    $_SERVER['SCRIPT_NAME'] = dirname(dirname($scriptName)) . '/' . basename($scriptName);
    return new Slim\Http\Environment($_SERVER);
    };

    编辑 : 在 Slim 4 中你应该使用 $app->setBasePath($basePath);方法。 More details

    关于php - 在现有的 apache web 服务器上运行 slim 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932959/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com