Codeigniter 4 base_url() is working fine on localhost (even using ip addresses like http://192.168.0.2/)
But on uploading it on a live server, i get the error below.
Call to undefined function App\Controllers\base_url()
I have set the base_url in the App\Config\App.php file and tried to autload the url helper in App\Config\BaseController.php file as shown below
public $baseURL = 'http://domainname.com/'; // App.php file
protected $helpers = ['url']; // BaseController.php file
I also tried to load the url_helper in the controller function like
helper('url'); // my_controller.php file
I didn't change anything in the .htaccess file. Its the same that comes with ci4 installation.
Any idea what might be causing the issue?
The .htaccess file is as follows:
# Disable directory browsing
Options All -Indexes
# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# If you installed CodeIgniter in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to the front controller, index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 index.php
</IfModule>
# Disable server signature start
ServerSignature Off
# Disable server signature end
It turns out that my System Files had been corrupted just like TimBrownlaw had pointed out.
Then main and most likely problem to cause this issue is if the url_helper is broken.
But I fixed the issue by re-downloading and uploading the core files for Code Igniter 4.