Php 在现有ApacheWeb服务器上运行slim框架

Php 在现有ApacheWeb服务器上运行slim框架,php,apache,slim,Php,Apache,Slim,我不熟悉slim框架。目前,在centos 7上的现有Web服务器上,我运行了其他基于php的应用程序。所以现在我的目录结构是这样的 var/www/html phpapp1 phpapp2 apislim 我为apislim创建的文件夹是为slim框架创建的。 下面是我所做的具体步骤 1.composer创建项目苗条/苗条骨架 2.我将slim skeleton文件夹重命名为apislim 3.我确保所有者是ApacheChown-R apache:ApacheApi

我不熟悉slim框架。目前,在centos 7上的现有Web服务器上,我运行了其他基于php的应用程序。所以现在我的目录结构是这样的

var/www/html
    phpapp1
    phpapp2
    apislim
我为apislim创建的文件夹是为slim框架创建的。 下面是我所做的具体步骤 1.composer创建项目苗条/苗条骨架
2.我将slim skeleton文件夹重命名为apislim 3.我确保所有者是ApacheChown-R apache:ApacheApislim 4.在httpd.conf中,我确保已启用此AllowOverride

<Directory "/var/www">
    AllowOverride All
    # Allow open access:
    Require all granted
    Options -Indexes
</Directory>
这两种方法都不起作用,都给我403。然后我检查错误日志,它显示关于FollowSymLinks的错误 所以我补充说 选项-索引+FollowSymLinks 进入


因此,我现在得到的下一个错误是500 interval server error。

以下步骤是Slim 3应用程序在子目录中工作所必需的

目录结构:

  • public/
    Web服务器文件(the)
    • .htaccess
      前端控制器的Apache重定向规则
    • index.php
      前端控制器
  • .htaccess
    内部重定向到公共/目录
文件内容:
.htaccess

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

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
# 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)方法

检查您的Apache错误日志-它应该会给您一些关于500错误发生原因的提示。另外,请检查并确保您有足够多的PHP最新版本-Slim的最新版本需要PHP5.5或更高版本,CentOS 7附带PHP5.4。@VirtuallyNick我有PHP7 CentOS 7的所有最新版本。实际上,是否可以使用现有应用程序运行slim framework?我不确定您所说的“使用现有应用程序运行slim framework”是什么意思?它当然可以与同一服务器上的其他项目共存,但Apache配置需要正确执行,以便其中一个的重写规则条目不会干扰另一个,你能试试这两个.htaccess文件吗@VirtuallyNick是的,我想确认它是否可以共存。感谢you@Daniel0我不知道这个部分是DocumentRoot/var/www/example.com/htdocs/public,因为目前我的结构是var/www/html phpapp1 phpapp2。那么,参照我的场景,我该怎么做呢?目前在我的配置中,我看到了这个DocumentRoot“/var/www/html”这不是我的其他应用程序的默认位置吗?我已经用一种更一般的方式给出了答案。当然,每个主机的根目录是不同的。为了避免任何误解,我删除了最后一部分。@Daniel0 nginx的确切步骤是什么。我正在尝试移动到nginx,但它不工作,因为我尝试使用try文件时,它不工作。nginx不支持任何关于如何在nginx上重复并使其工作的指导?
。htaccess
文件。如果您使用nginx,请阅读此超薄部分。@Daniel0我尝试了您提供的链接,但始终指向/var/www/html中的index.php。我完全迷路了,我尝试了许多不同的选择和方法,但似乎都没有给出任何解决方案。nginx是否有特殊设置