前一段时间,我试图重新打开以前的工作,但无法打开XAMPP控制面板,我想是因为我重新安装了Windows10。然后我决定下载最新版本的XAMPP和CodeIgniter,然后进行传输我以前的文件到新系统。
先前的CI_VERSION ='3.1.1'-最新的CI_VERSION ='3.1.9'-PHP的先前版本:7.0.8-PHP的最新版本7.2.3
当我当前的系统指向创建用户名和密码的“用户名”页面时,出现以下错误。在我以前的系统中,此功能运行正常。这似乎是由于PHP版本之间的差异引起的。
遇到PHP错误 严重程度:警告
消息:使用未定义的常量BASE_URL-假定为“ BASE_URL”(这将在以后的PHP版本中引发错误)
文件名:username.php 行号:47
这是第47行
<form class="form" method="post" action="<?php echo BASE_URL . 'username'; ?>">
回溯:
文件:C:\ xampp \ htdocs \ application \ views \ username.php 行:47 函数:_error_handler 这是第47行-“>
文件:C:\ xampp \ htdocs \ application \ controllers \ Username.php 行:70 功能:查看 这是第70行-$ this-> load-> view('username',$ data);
文件:C:\ xampp \ htdocs \ index.php 线:315 函数:require_once BASE_URLusername“> 这是第315行-require_once BASEPATH.'core / CodeIgniter.php';
有人可以告诉我我需要更改什么吗?
更新1
我唯一可以找到base_url定义的位置是在/config/config.php中;
$config['base_url'] = 'http://localhost/';
在我之前的工作和当前的系统之间并没有改变。
更新2
在Controller Username.php中有一个加载功能
$this->load->helper(array('form', 'url'));
但是除了索引文件之外,我在helper文件夹中找不到任何东西。
同样,在我以前的工作和当前系统之间,这没有改变。
答案 0 :(得分:0)
常量BASE_URL
是在旧代码中的某个地方定义的,而不是在新代码中的某个地方。 CodeIgniter没有定义名为BASE_URL
的常量,因此它是在某些自定义代码中完成的。可能看起来像这样
define('BASE_URL', base_url());
还有其他获取值的方法,因此要寻找的主要对象是define('BASE_URL',
。
看起来很像的地方是/config/config.php
或/config/constants.php
的自定义版本,但是还有很多其他地方,包括基本控制器,自定义库或一些其他用户创建的配置文件。
答案 1 :(得分:0)
在最新的CodeIgniter源代码中找不到任何名为BASE_URL
的常量。
他们的文档建议使用base_url()
函数返回网站的基本URL。
https://www.codeigniter.com/user_guide/helpers/url_helper.html?highlight=base_url#base_url
但是,在GitHub上有一个较旧的仓库,我可以找到一个CodeIgniter的版本,其中在常量constant.php文件中定义了常量BASE_URL
。
https://github.com/assoft/codeigniter/blob/master/application/config/constants.php
可能这是旧版本的常见做法。
因此,在您的示例中,您可以使用base_url()
函数。这应该输出http://www.example.com/username
<form class="form" method="post" action="<?php echo base_url('username'); ?>">
您必须在与所使用视图相对应的控制器方法中导入url帮助器。
$this->load->helper('url');
您还应该在application / config / config.php文件中填写基本url的值。
$config['base_url'] = 'http://www.example.com';
答案 2 :(得分:0)
您必须定义base_url。我在头文件中使用它。
<script>
var base_url = '<?php echo base_url(); ?>';
</script>
答案 3 :(得分:0)
我发现了问题。在我的旧系统的constants.php中,有以下内容,
define('BASE_URL', 'http://localhost/');
我将其复制到当前的contants.php文件中,并且可以正常工作,也就是说我没有得到错误。