簡體   English   中英

在現有的Apache Web服務器上運行苗條框架

[英]Running slim framework on existing apache web server

我是苗條的框架新手。 目前,在我現有的網絡服務器上(在centos 7上),我正在運行其他基於php的應用程序。 所以目前我的目錄結構是這樣的。

var/www/html
    phpapp1
    phpapp2
    apislim

我創建的apislim文件夾用於苗條框架。 以下是我做過的確切步驟:1.作曲家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>
  1. 在apislim / public文件夾中,我有以下.htaccess文件。

    RewriteEngine開

    RewriteCond%{REQUEST_URI} :: $ 1 ^(/.+)/(。 ):: \\ 2 $ RewriteRule ^(。 )-[E = BASE:%1]

    RewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^(。*)$%{ENV:BASE} index.php [QSA,L]

  2. 我在公用文件夾中也有index.php文件,該文件也鏈接到路由的src和主文件夾apislim,我創建了另一個.htaccess文件並添加了它。

    RewriteRule上的RewriteEngine ^ $ public / [L] RewriteRule(。*)public / $ 1 [L]

現在的問題是,我希望現有的應用程序可以與基於苗條框架的rest api一起使用。 所以當我去這個鏈接

http://*.*.*.*/apislim/
http://*.*.*.*/apislim/public/
http://*.*.*.*/apislim/public/index.php

它們都不起作用都禁止我使用403。 然后,我檢查錯誤日志,它顯示有關FollowSymLinks的錯誤,因此我在其中添加了Options -Indexes + FollowSymLinks

因此,我現在得到的下一個錯誤是500間隔服務器錯誤。

要使Slim 3應用程序在子目錄中工作,必須執行以下步驟。

目錄結構:

  • public/ Web服務器文件( DocumentRoot
    • .htaccess前端控制器的Apache重定向規則
    • index.php前端控制器
  • .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); 方法。 更多細節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM