我一直在努力的网站,当我尝试将其部署到实时服务器时,我在本地开发和实时开发环境中工作正常,这给我带来了问题(客户希望将它们托管在现有托管服务提供商)。
我将网站上传到服务器并更新了数据库配置,就像我之前在我和其他服务器上做过很多次而没有问题。然而,这一次,我被提出:
SilverStripe Framework requires a $databaseConfig defined.
当我从根文件夹中删除.htaccess文件时,该网站出现了,但是,所有网址都是这样的:
www.domain.com/index.php/page_name
经过几次搜索后,我遇到了index.php问题的解决方案;将以下内容添加到我的_config文件
Director::setBaseURL('/');
我这样做了,网址显示正确,但导航到他们会给我404.
我恢复了htaccess文件并将其缩小到此块:
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule .* framework/main.php?url=%1 [QSA]
当这个到位时,我得到上面提到的数据库配置错误,当它不存在时,我的网址产生404s
有没有人对这里发生的事情有任何见解?我和主持人有很多来回反复,他不是很了解,也无法提供任何建议,而且就这一方面而言,我并不是天才。
答案 0 :(得分:2)
我假设您使用的是SilverStripe 3.1+,因此Director配置可以/应该放在您的YAML配置文件中(静态将被弃用):
Director:
alternate_base_url: '/'
虽然这主要有助于base_tag
的问题。
然而,可以通过添加RewriteBase
:
RewriteEngine On
RewriteBase '/'
如果不是公共根目录,您可以使用'/'
或安装SS文件夹。这通常由SilverStripe安装程序通过检查$base = dirname($_SERVER['SCRIPT_NAME']);
和其他一些小事来自动处理。检查install.php5
第1483行,您可以使用它来找出你的RewriteBase。
如果这不起作用,请尝试全新安装,而不是将本地安装复制到服务器。
答案 1 :(得分:1)
您是否使用_ss_enviroment.php来定义数据库配置详细信息?我在从SS 2.4迁移到3.1.2的项目中有类似的经历。
在您的网站_config.php
中设置此项// Use _ss_environment.php file for configuration
//Please note that your system should have a file, _ss_environment.php, with database connectivity data,
require_once("conf/ConfigureFromEnv.php");
global $database;
$database = '';
我希望这会有所帮助