CI4要怎么配置才能跑起来呢,在Windows IIS7.5
本帖最后由 冰辉 于 2018-9-30 13:32 编辑我在现在的IIS站点加一个虚拟目录v3映射到public目录,在application/Config/App.php设置了 public $baseURL = 'v3'
访问出现如下结果:
PHP Fatal error:Uncaught TypeError: Argument 1 passed to CodeIgniter\HTTP\URI::setScheme() must be of the type string, null given, called in D:\CodeIgniter\system\HTTP\IncomingRequest.php on line 585 and defined in D:\CodeIgniter\system\HTTP\URI.php:583Stack trace:
#0 D:\CodeIgniter\system\HTTP\IncomingRequest.php(585): CodeIgniter\HTTP\URI->setScheme(NULL)
#1 D:\CodeIgniter\system\HTTP\IncomingRequest.php(172): CodeIgniter\HTTP\IncomingRequest->detectURI('REQUEST_URI', 'v3/')
#2 D:\CodeIgniter\system\Config\Services.php(526): CodeIgniter\HTTP\IncomingRequest->__construct(Object(Config\App), Object(CodeIgniter\HTTP\URI), '', Object(CodeIgniter\HTTP\UserAgent))
#3 D:\CodeIgniter\system\Config\BaseService.php(114): CodeIgniter\Config\Services::request(Object(Config\App), false)
#4 D:\CodeIgniter\system\Config\Services.php(514): CodeIgniter\Config\BaseService::getSharedInstance('request', NULL)
#5 D:\CodeIgniter\system\Config\Services.php(231): CodeIgniter\Config\Services::request()
#6 D:\CodeIgniter\system\Config\BaseService. in D:\CodeIgniter\system\HTTP\URI.php on line 583
本帖最后由 冰辉 于 2018-10-9 09:55 编辑
Hex 发表于 2018-10-1 02:13
报什么错误?这是全局变量,哪里都可以使用呀。
是这样的第一次:
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
public $baseURL = $http_type . $_SERVER['HTTP_HOST'] . '/v3/';
报:
PHP Parse error:syntax error, unexpected '$http_type' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in D:\CodeIgniter\application\Config\App.php on line 24
第二次,我是需要public声明变量
public $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
public $baseURL = $http_type . $_SERVER['HTTP_HOST'] . '/v3/';
报:
PHP Fatal error:Constant expression contains invalid operations in D:\CodeIgniter\application\Config\App.php on line 24
总结:
我在app.php 里面设置了,public $baseURL = 'http://127.0.0.1/v3/';
我测试了http和 https,都可以访问,不影响。
我想多了。
换到linux下,nignx+php,还是报错
Fatal error: Uncaught TypeError: Argument 1 passed to CodeIgniter\HTTP\URI::setScheme() must be of the type string, null given, called in /www/wwwroot/web/system/HTTP/IncomingRequest.php on line 585 and defined in /www/wwwroot/web/system/HTTP/URI.php:583
Stack trace:
#0 /www/wwwroot/web/system/HTTP/IncomingRequest.php(585): CodeIgniter\HTTP\URI->setScheme(NULL)
#1 /www/wwwroot/web/system/HTTP/IncomingRequest.php(172): CodeIgniter\HTTP\IncomingRequest->detectURI('REQUEST_URI', '/public/')
#2 /www/wwwroot/web/system/Config/Services.php(526): CodeIgniter\HTTP\IncomingRequest->__construct(Object(Config\App), Object(CodeIgniter\HTTP\URI), '', Object(CodeIgniter\HTTP\UserAgent))
#3 /www/wwwroot/web/system/Config/BaseService.php(114): CodeIgniter\Config\Services::request(Object(Config\App), false)
#4 /www/wwwroot/web/system/Config/Services.php(514): CodeIgniter\Config\BaseService::getSharedInstance('request', NULL)
#5 /www/wwwroot/web/system/Config/Services.php(231): CodeIgniter\Config\Services::request()
#6 /www/wwwroot/web/sys in /www/wwwroot/web/system/HTTP/URI.php on line 583 Hex 发表于 2018-10-1 02:13
报什么错误?这是全局变量,哪里都可以使用呀。
对于这个问题我也很有疑问。
CI4里面的$baseURL 是否同等于 CI3里面的$config['base_url']
刚刚试过了,App.php 里面 $baseURL = ‘http://127.0.0.1/’没有问题
但是使用了全局变量却不行‘
’
CI3里面我是这么配置的
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
CI4里面:
public $baseURL = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
CI4报错:PHP Fatal error:Constant expression contains invalid operations in D:\www\CodeIgniter4-develop\application\Config\App.php on line 24
不知道是不是写法不对还是其他的,望能解惑。 public $baseURL = '/v3' 也不行
public $baseURL = '/v3/' 也不行 我弄明白了
public $baseURL = 'http://ww.xxx.xx/v3/' 但是如果是多个域名和端口的话,就不灵活了,为什么CI4会这样呢 冰辉 发表于 2018-9-30 22:46
但是如果是多个域名和端口的话,就不灵活了,为什么CI4会这样呢
$baseUrl 你可以自己通过 $_SERVER 自动识别当前域名和端口,这个 CI3 就是这样的,这里可以写代码的,你可以随意定制。
另外,建议先看看手册再来用 CI4。
Hex 发表于 2018-9-30 23:15
$baseUrl 你可以自己通过 $_SERVER 自动识别当前域名和端口,这个 CI3 就是这样的,这里可以写代码的,你 ...
是的,我看了中文版的手册,没翻译好,我理解错了;
后来看了英文版的手册,才知道。 CI4 在application/Config/App.php 里面不能用php的变量,如$_SERVER,会报错误;
先不管了,边学边用。 冰辉 发表于 2018-9-30 23:57
CI4 在application/Config/App.php 里面不能用php的变量,如$_SERVER,会报错误;
先不管了,边学边用。 ...
报什么错误?这是全局变量,哪里都可以使用呀。
页:
[1]
2