将Magento 1.6.1安装迁移到新的专用服务器时,我收到了无效的uri错误

时间:2012-11-14 17:41:20

标签: magento

将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}

2 个答案:

答案 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的方法的定义,并确定它失败的字符。