我正在尝试在HostGator帐户上部署Slim
PHP框架。
我的项目来源如下:
project/
├── .htaccess
├── src/
│ ├── classes/
│ ├── vendor/
│ ├── composer.json
│ ├── routes.php
│ ├── settings.php
│ └── index.php
└── public/
├── index.php
└── .htaccess
并且部署相同,project
文件夹是我的HostGator帐户中的最高级别文件夹,其中包括public_html
和其他内容。
在tutorial之后我将htaccess
添加到public
中(逐字逐句)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
还在某处我将其添加到根htaccess
文件中(其中还包含使用PHP7的设置,并且可以正常运行..)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
当我尝试使用这些新的htaccess
文件访问该网站时,我得到500 Internal Server Error
。
显然我的htaccess是错误的,我只是不知道出了什么问题。我想应该发生的事情应该是首先将public/index.php
和Slim
发送到require __DIR__ . '/../src/vendor/autoload.php';
require __DIR__ . '/../src/dependencies.php';
require __DIR__ . '/../src/middleware.php';
require __DIR__ . '/../src/routes.php';
$settings = require __DIR__ . '/../src/settings.php';
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
// require custom classesw
spl_autoload_register(function ($classname) {
require ("../src/classes/" . $classname . ".php");
});
session_start();
$app = new \Slim\App($settings);
$container = $app->getContainer();
$container['logger'] = function($c) {
$logger = new \Monolog\Logger('my_logger');
$file_handler = new \Monolog\Handler\StreamHandler("../src/logs/app.log");
$logger->pushHandler($file_handler);
return $logger;
};
$app->get('/', function (Request $request, Response $response) {
$response->getBody()->write("Hello");
return $response;
});
$app->run();
并且我自己将处理路由。
公共/ index.php的
Unable to load DLL 'SqlServerSpatial.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
答案 0 :(得分:0)
将public
移至public_html
主htaccess
文件恢复为正常状态(即没有)。
公开htaccess
档案
<IfModule mod_rewrite.c>
RewriteEngine on
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [QSA,L]
</IfModule>