如何让我的Code Igniter路由在我们的AWS Web主机中运行

时间:2017-03-20 09:01:04

标签: php codeigniter amazon-web-services amazon-ec2

我们正在将我们的网站从当前的网站托管服务转移到AWS。该网站外包给第三方开发商,并被移交给我。在检查代码时,我看到它是在Code Igniter中完成的。

我已将网站上传到AWS中的实例,以便与当前的网络主机并行运行:

  • 可在URL www.oursite.com
  • 上访问当前主机中的网站
  • 在url上访问AWS实例ec2-our-instance.compute.amazonaws.com

我已确保AWS数据库连接正常运行。在一个配置文件中,我调整了基本URL:

function baseUrl(){
    //$base ='http://www.oursite.com/';

    $base = 'http://ec2-our-instance.compute.amazonaws.com/';

    return $base;
}

调用baseURL()将返回我们的AWS实例URL。

我现在的问题是网站通过路由URL中的文件名,功能和参数来调用文件site_info.php中的函数。

下面列出了功能文件的目录:

\site\application\controllers\site_info.php

site_info.php中的一个函数是:

function showWorld(){
    echo 'Hello World';
}

对showWorld()的cURL调用将URL设置为函数的路径,即baseURL()。'/ site / site_info / showWorld'。代码如下:

function showSomething(){
    $url = baseURL().'/site/site_info/showWorld';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,120); 
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
    curl_setopt($ch, CURLOPT_USERAGENT , 
    curl_setopt($ch, CURLOPT_URL, $url ); 
}

showSomething();

对函数showSomething()的调用回应了当前托管网站上的内容,即www.oursite.com。我甚至可以在浏览器上运行URL www.oursite.com/site/site_info/showWorld并获取回音内容。

AWS托管网站返回错误“此服务器上找不到请求的网址/网站/ site_info / showWorld。”

我该如何纠正?

1 个答案:

答案 0 :(得分:0)

Just Define in your root/application/config/config.php
$config['base_url'] = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME']."/";

call like this

function showSomething(){
    $url = base_url(true).'site/site_info/showWorld';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,120); 
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
    curl_setopt($ch, CURLOPT_USERAGENT , 
    curl_setopt($ch, CURLOPT_URL, $url ); 
}

showSomething();