将Magento安装迁移到新的专用服务器时出现以下错误
我在克隆和迁移Magento方面经验丰富,但我无法弄清楚这里有什么问题。
我检查了新服务器的兼容性,那很好..
当uri中有下划线时,通常会抛出此错误。我尝试过不同的子域名,但不断收到错误。我刚刚将同一个站点迁移到我的开发服务器,它运行正常 - 任何想法?
Trace:
/home/shushush/public_html/shoponline/magento/lib/Zend/Uri.php(143): Zend_Uri_Http->__construct('http', '//www.shushusho...')
1 /home/shushush/public_html/shoponline/magento/app/code/core/Mage/Core/Model/Store.php(712): Zend_Uri::factory('http://www.shus...')
2 /home/shushush/public_html/shoponline/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(313): Mage_Core_Model_Store->isCurrentlySecure()
3 /home/shushush/public_html/shoponline/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(161): Mage_Core_Controller_Varien_Front->_checkBaseUrl(Object(Mage_Core_Controller_Request_Http))
4 /home/shushush/public_html/shoponline/magento/app/code/core/Mage/Core/Model/App.php(349): Mage_Core_Controller_Varien_Front->dispatch()
5 /home/shushush/public_html/shoponline/magento/app/Mage.php(640): Mage_Core_Model_App->run(Array)
6 /home/shushush/public_html/shoponline/magento/index.php(80): Mage::run('', 'store')
7 {main}
答案 0 :(得分:6)
问题是由于'_'。它不会识别下划线。
答案 1 :(得分:1)
查看您的调用堆栈,看起来这是触发您正在看到的错误/异常的方法
Zend_Uri_Http->__construct
跳到该文件的来源,我猜(因为你没有包含错误文本),这是你看到的例外。
#File: lib/Zend/Uri/Http.php
protected function __construct($scheme, $schemeSpecific = '')
{
//...
if ($this->valid() === false) {
#require_once 'Zend/Uri/Exception.php';
throw new Zend_Uri_Exception('Invalid URI supplied');
}
//...
}
看一下valid
方法的定义
public function valid()
{
// Return true if and only if all parts of the URI have passed validation
return $this->validateUsername()
and $this->validatePassword()
and $this->validateHost()
and $this->validatePort()
and $this->validatePath()
and $this->validateQuery()
and $this->validateFragment();
}
你可以看到Zend / Magento调用的7个方法来确定URI是否有效。其中一个是失败的。我建议添加一些临时调试代码来确定哪个方法返回false
public function valid()
{
var_dump($this->validateUsername());
var_dump($this->validatePassword());
var_dump($this->validateHost());
var_dump($this->validatePort());
var_dump($this->validatePath());
var_dump($this->validateQuery());
var_dump($this->validateFragment());
// Return true if and only if all parts of the URI have passed validation
return $this->validateUsername()
and $this->validatePassword()
and $this->validateHost()
and $this->validatePort()
and $this->validatePath()
and $this->validateQuery()
and $this->validateFragment();
}
然后,一旦你知道了,你可以查看返回false的方法的定义,并确定它失败的字符。