define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));
This is a constant in discuz that defines the forum installation root directory. Now let's analyze this very simple but very practical constant.
First of all, let me explain that this article assumes that the absolute path of the common.inc.php file is F:webrootbbsincludecommon.inc.php
This sentence is included in discuz’s include/common.inc. In php, first let's take a look at the value of the constant DISCUZ_ROOT: F:webrootbbs
Next we analyze this sentence in detail:
define(), of course, defines a constant. Here it is defining a name. Constant for DISCUZ_ROOT.
substr(), this is a string interception function. The sentence substr(‘123456789’, 0, -2) returns 1234567.
dirname(__FILE__), __FILE__ is a magic constant, the manual says so "The full path and file name of the file. If used in an include file, the include file name is returned. Since PHP 4.0. 2, __FILE__ always contains an absolute path, whereas previous versions sometimes contained a relative path." dirname(), returns the directory part of the path. It seems that dirname(__FILE__) is the obtained F:webrootbbsinclude containing a string.
It can be seen that define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7)); is the string
F:webrootbbsinclude minus the last 7 letters String: F:webrootbbsIf the include folder is changed to lib, then -7 should be changed to -3. Do you understand?
When you reference files in the program in the future, you can write like this
require_once DISCUZ_ROOT . './test.php'; The actual content of this sentence is require_once F:webrootbbs./test.php