1

我正在将我的项目从 CodeIgniter 3 迁移到 CodeIgniter 4。我对框架的新结构感到困惑。所以这是我的问题,

我将App.php中的基本网址设置为:

protected $proj_root= "http://".$_SERVER['HTTP_HOST'];
protected $proj_root2  = str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
protected $mybase= $proj_root.$proj_root2;
public $baseURL =  $mybase;

但我收到这样的错误:

致命错误:常量表达式在第 26 行的 D:\xampp\htdocs\delivery_dashboard\app\Config\App.php 中包含无效操作

所以从字面上看,我只能这样做:

public $baseURL = "http://localhost/my_project/"

如何使用动态设置我的基本 url$_SERVER['HTTP_HOST']或者这里有什么解决方法?

谢谢您的帮助!

4

5 回答 5

10

我不知道确切的解决方案,但我与您分享了我的解决方案转到 app/Config/ Constants.php

    $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https://'.$_SERVER['HTTP_HOST'] : 'http://'.$_SERVER['HTTP_HOST'];
    defined('BASE') || define('BASE',$protocol);

在 app/Config/ App.php

 public $baseURL    = BASE;

希望这可以帮助

于 2020-03-07T04:24:03.170 回答
0

Boominathan 的改进答案

应用程序/配置/常量.php

$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https://'.$_SERVER['HTTP_HOST'] : 'http://'.$_SERVER['HTTP_HOST']."".str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
defined('BASEURL') || define('BASEURL',$protocol);

在 app/Config/App.php

public $baseURL = BASEURL;
于 2021-02-13T17:21:49.600 回答
0

转到app/Config/Constants.php并在文件末尾添加以下代码行。

$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || isset($_ENV['FORCE_HTTPS'])) ? 'https' : 'http';
$base_url .= '://' . $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '',   $_SERVER['SCRIPT_NAME']);
defined('BASESEURL') || define('BASESEURL', $base_url);

然后进入 in app/Config/App.phpBASESEURL应用于$baseURL变量

 public $baseURL = BASESEURL;
于 2021-10-09T07:13:26.730 回答
0

检查并适用于动态 baseURL 和 PHP spark 服务

defined('BASE_URL') OR define('BASE_URL', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off'  ? 'https://'.$_SERVER['HTTP_HOST'] : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . '/');
$config['base_url'] = BASE_URL;
于 2021-12-20T03:01:28.657 回答
0

转到 app/Config/Constants.php 并在您的 IDE 中打开它。然后将下面的代码放在文件的末尾。

if ( (! empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') ||
     (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ||
     (! empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ) {
    $protocole = 'https://';
} else {
    $protocole = 'http://';
}

$host = $_SERVER['HTTP_HOST'] . '/';
$project = explode('/', $_SERVER['REQUEST_URI']);
$baseurl = $protocole . $host . $project[1];
$myappBaseUrl = $baseurl.'/';
defined('BASESEURL') || define('BASESEURL',$myappBaseUrl);

现在打开 app/Config/App.php 并替换这个

public $baseURL = 'http://localhost:8080/';

public $baseURL = BASESEURL;
于 2020-09-28T18:18:39.623 回答