49@phan-var-force ?string $dolibarr_font_DOL_DEFAULT_TTF
50@phan-var-force ?string $dolibarr_font_DOL_DEFAULT_TTF_BOLD
51@phan-var-force ?string $dolibarr_js_CKEDITOR
52@phan-var-force ?string $dolibarr_js_JQUERY
53@phan-var-force ?string $dolibarr_js_JQUERY_UI
54@phan-var-force ?string $dolibarr_lib_NUSOAP_PATH
55@phan-var-force ?string $dolibarr_lib_ODTPHP_PATH
56@phan-var-force ?string $dolibarr_lib_ODTPHP_PATHTOPCLZIP
57@phan-var-force ?string $dolibarr_lib_PHPEXCELNEW_PATH
58@phan-var-force ?string $dolibarr_lib_TCPDF_PATH
59@phan-var-force ?string $dolibarr_lib_TCPDI_PATH
62if (!defined(
'DOL_APPLICATION_TITLE')) {
63 define(
'DOL_APPLICATION_TITLE',
'Dolibarr');
65if (!defined(
'DOL_VERSION')) {
66 define(
'DOL_VERSION',
'22.0.5');
69if (!defined(
'EURO')) {
70 define(
'EURO', chr(128));
74if (!defined(
'LOG_DEBUG')) {
75 if (!function_exists(
"syslog")) {
77 define(
'LOG_EMERG', 0);
78 define(
'LOG_ALERT', 1);
79 define(
'LOG_CRIT', 2);
81 define(
'LOG_WARNING', 4);
82 define(
'LOG_NOTICE', 5);
83 define(
'LOG_INFO', 6);
84 define(
'LOG_DEBUG', 7);
89if (defined(
'DOL_INC_FOR_VERSION_ERROR')) {
111 return session_regenerate_id();
123 $oldsessionid = session_id();
126 $session_backup = $_SESSION;
129 $_SESSION[
'OBSOLETE'] =
true;
130 $_SESSION[
'EXPIRES'] = time() + 60;
133 session_write_close();
136 session_name($sessionname);
140 $_SESSION = $session_backup;
143 unset($session_backup);
144 unset($_SESSION[
'OBSOLETE']);
145 unset($_SESSION[
'EXPIRES']);
147 $newsessionid = session_id();
155$conffile =
"conf/conf.php";
156$conffiletoshow =
"htdocs/conf/conf.php";
167$result = @include_once $conffile;
187$listofwrappers = stream_get_wrappers();
191$arrayofstreamtodisable = array(
'compress.zlib',
'compress.bzip2',
'ftp',
'ftps',
'glob',
'data',
'expect',
'ogg',
'rar',
'zlib');
192if (!empty($dolibarr_main_stream_to_disable) && is_array($dolibarr_main_stream_to_disable)) {
193 $arrayofstreamtodisable = $dolibarr_main_stream_to_disable;
195foreach ($arrayofstreamtodisable as $streamtodisable) {
196 if (!empty($listofwrappers) && in_array($streamtodisable, $listofwrappers)) {
200 stream_wrapper_unregister($streamtodisable);
204if (!$result && !empty($_SERVER[
"GATEWAY_INTERFACE"])) {
205 if (!empty($_SERVER[
"CONTEXT_PREFIX"])) {
206 $path = $_SERVER[
"CONTEXT_PREFIX"];
207 if (!preg_match(
'/\/$/', $path)) {
210 } elseif (preg_match(
'/index\.php/', $_SERVER[
'PHP_SELF'])) {
220 $TDir = explode(
'/', $_SERVER[
'PHP_SELF']);
224 if (empty($TDir[$i]) || $TDir[$i] ==
'htdocs') {
227 if ($TDir[$i] ==
'dolibarr') {
230 if (substr($TDir[$i], -4, 4) ==
'.php') {
238 header(
"Location: ".$path.
"install/index.php");
250if (version_compare(phpversion(),
'8.4',
'<')) {
251 if (!empty($dolibarr_strict_mode)) {
252 error_reporting(E_ALL | E_STRICT);
254 error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED));
258 if (!empty($dolibarr_strict_mode)) {
259 error_reporting(E_ALL);
261 error_reporting(E_ALL & ~(E_NOTICE | E_DEPRECATED));
266if (!empty($dolibarr_main_prod)) {
267 ini_set(
'display_errors',
'Off');
271$dolibarr_main_data_root = (empty($dolibarr_main_data_root) ?
'' : trim($dolibarr_main_data_root));
274$dolibarr_main_document_root = (empty($dolibarr_main_document_root) ?
'' : trim($dolibarr_main_document_root));
275$dolibarr_main_document_root_alt = (empty($dolibarr_main_document_root_alt) ?
'' : trim($dolibarr_main_document_root_alt));
277if (!isset($dolibarr_main_db_port)) {
278 $dolibarr_main_db_port = 3306;
280if (empty($dolibarr_main_db_type)) {
281 $dolibarr_main_db_type =
'mysqli';
285if ($dolibarr_main_db_type ==
'mysql') {
286 $dolibarr_main_db_type =
'mysqli';
288if (empty($dolibarr_main_db_prefix)) {
289 $dolibarr_main_db_prefix =
'llx_';
291if (empty($dolibarr_main_db_character_set)) {
292 $dolibarr_main_db_character_set = ($dolibarr_main_db_type ==
'mysqli' ?
'utf8' :
'');
294if (empty($dolibarr_main_db_collation)) {
295 $dolibarr_main_db_collation = ($dolibarr_main_db_type ==
'mysqli' ?
'utf8_unicode_ci' :
'');
297if (empty($dolibarr_main_db_encryption)) {
298 $dolibarr_main_db_encryption = 0;
300if (empty($dolibarr_main_db_cryptkey)) {
301 $dolibarr_main_db_cryptkey =
'';
303if (empty($dolibarr_main_limit_users)) {
304 $dolibarr_main_limit_users = 0;
306if (empty($dolibarr_mailing_limit_sendbyweb)) {
307 $dolibarr_mailing_limit_sendbyweb = 0;
309if (empty($dolibarr_mailing_limit_sendbycli)) {
310 $dolibarr_mailing_limit_sendbycli = 0;
312if (empty($dolibarr_mailing_limit_sendbyday)) {
313 $dolibarr_mailing_limit_sendbyday = 0;
315if (empty($dolibarr_strict_mode)) {
316 $dolibarr_strict_mode = 0;
319define(
'DOL_DOCUMENT_ROOT', $dolibarr_main_document_root);
321if (!file_exists(DOL_DOCUMENT_ROOT.
"/core/lib/functions.lib.php")) {
322 print
"Error: Dolibarr config file content seems to be not correctly defined (file ".DOL_DOCUMENT_ROOT.
"/core/lib/functions.lib.php not found).<br>\n";
323 print
"Please run dolibarr setup by calling page <b>/install</b>.<br>\n";
329include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions.lib.php';
330include_once DOL_DOCUMENT_ROOT.
'/core/lib/security.lib.php';
339if (!defined(
'NOCSRFCHECK') && isset($dolibarr_nocsrfcheck) && $dolibarr_nocsrfcheck == 1) {
340 if (!empty($_SERVER[
'REQUEST_METHOD']) && !in_array($_SERVER[
'REQUEST_METHOD'], array(
'GET',
'HEAD')) && !empty($_SERVER[
'HTTP_HOST'])) {
342 if (empty($_SERVER[
'HTTP_REFERER'])) {
345 $tmpa = parse_url($_SERVER[
'HTTP_HOST']);
346 $tmpb = parse_url($_SERVER[
'HTTP_REFERER']);
347 if ((empty($tmpa[
'host']) ? $tmpa[
'path'] : $tmpa[
'host']) != (empty($tmpb[
'host']) ? $tmpb[
'path'] : $tmpb[
'host'])) {
354 dol_syslog(
"--- Access to ".(empty($_SERVER[
"REQUEST_METHOD"]) ?
'' : $_SERVER[
"REQUEST_METHOD"].
' ').$_SERVER[
"PHP_SELF"].
" refused by CSRF protection (Bad referrer).", LOG_WARNING);
355 print
"Access refused by CSRF protection in main.inc.php. Referrer of form (".htmlentities(empty($_SERVER[
'HTTP_REFERER']) ?
'' : $_SERVER[
'HTTP_REFERER'], ENT_COMPAT,
'UTF-8').
") is outside the server that serve this page (with method = ".htmlentities($_SERVER[
'REQUEST_METHOD'], ENT_COMPAT,
'UTF-8').
").\n";
356 print
"If you access your server behind a proxy using url rewriting, you might check that all HTTP headers are propagated (or add the line \$dolibarr_nocsrfcheck=1 into your conf.php file to remove this security check).\n";
362if (empty($dolibarr_main_db_host) && !defined(
'NOREQUIREDB')) {
363 print
'<div class="center">Dolibarr setup is not yet complete.<br><br>'.
"\n";
364 print
'<a href="install/index.php">Click here to finish Dolibarr install process</a> ...</div>'.
"\n";
367if (empty($dolibarr_main_url_root) && !defined(
'NOREQUIREVIRTUALURL')) {
368 print
'Value for parameter \'dolibarr_main_url_root\' is not defined in your \'htdocs\conf\conf.php\' file.<br>'.
"\n";
369 print
'You must add this parameter with your full Dolibarr root Url (Example: http://myvirtualdomain/ or http://mydomain/mydolibarrurl/)'.
"\n";
373if (empty($dolibarr_main_document_root_alt)) {
374 $dolibarr_main_document_root_alt = $dolibarr_main_document_root.
'/custom';
377if (empty($dolibarr_main_data_root)) {
379 $dolibarr_main_data_root = str_replace(
"/htdocs",
"", $dolibarr_main_document_root);
380 $dolibarr_main_data_root .=
"/documents";
384define(
'DOL_CLASS_PATH',
'class/');
385define(
'DOL_DATA_ROOT', $dolibarr_main_data_root);
390$real_dolibarr_main_document_root = str_replace(
'\\',
'/', realpath($dolibarr_main_document_root));
391if (!empty($_SERVER[
"DOCUMENT_ROOT"])) {
392 $pathroot = $_SERVER[
"DOCUMENT_ROOT"];
394 $pathroot =
'NOTDEFINED';
396$paths = explode(
'/', str_replace(
'\\',
'/', $_SERVER[
"SCRIPT_NAME"]));
400foreach ($paths as $tmppath) {
401 if (empty($tmppath)) {
404 $concatpath .=
'/'.$tmppath;
407 if ($real_dolibarr_main_document_root == @realpath($pathroot.$concatpath)) {
420 $tmp =
'http'.((!
isHTTPS() && (empty($_SERVER[
"SERVER_PORT"]) || $_SERVER[
"SERVER_PORT"] != 443)) ?
'' :
's').
'://'.$_SERVER[
"SERVER_NAME"].((empty($_SERVER[
"SERVER_PORT"]) || $_SERVER[
"SERVER_PORT"] == 80 || $_SERVER[
"SERVER_PORT"] == 443) ?
'' :
':'.$_SERVER[
"SERVER_PORT"]).($tmp3 ? (preg_match(
'/^\//', $tmp3) ?
'' :
'/').$tmp3 :
'');
424if (!empty($dolibarr_main_force_https)) {
425 $tmp = preg_replace(
'/^http:/i',
'https:', $tmp);
427define(
'DOL_MAIN_URL_ROOT', $tmp);
428$uri = preg_replace(
'/^http(s?):\/\//i',
'', constant(
'DOL_MAIN_URL_ROOT'));
429$suburi = strstr($uri,
'/');
430if (empty($suburi) || $suburi ===
'/') {
433if (!defined(
'DOL_URL_ROOT')) {
434 define(
'DOL_URL_ROOT', $suburi);
439define(
'MAIN_DB_PREFIX', $dolibarr_main_db_prefix);
447if (!defined(
'TCPDF_PATH')) {
448 define(
'TCPDF_PATH', (empty($dolibarr_lib_TCPDF_PATH)) ? DOL_DOCUMENT_ROOT.
'/includes/tecnickcom/tcpdf/' : $dolibarr_lib_TCPDF_PATH.
'/');
450if (!defined(
'TCPDI_PATH')) {
451 define(
'TCPDI_PATH', (empty($dolibarr_lib_TCPDI_PATH)) ? DOL_DOCUMENT_ROOT.
'/includes/tcpdi/' : $dolibarr_lib_TCPDI_PATH.
'/');
453if (!defined(
'NUSOAP_PATH')) {
454 define(
'NUSOAP_PATH', (!isset($dolibarr_lib_NUSOAP_PATH)) ? DOL_DOCUMENT_ROOT.
'/includes/nusoap/lib/' : (empty($dolibarr_lib_NUSOAP_PATH) ?
'' : $dolibarr_lib_NUSOAP_PATH.
'/'));
456if (!defined(
'PHPEXCELNEW_PATH')) {
457 define(
'PHPEXCELNEW_PATH', (!isset($dolibarr_lib_PHPEXCELNEW_PATH)) ? DOL_DOCUMENT_ROOT.
'/includes/phpoffice/phpspreadsheet/src/PhpSpreadsheet/' : (empty($dolibarr_lib_PHPEXCELNEW_PATH) ?
'' : $dolibarr_lib_PHPEXCELNEW_PATH.
'/'));
459if (!defined(
'ODTPHP_PATH')) {
460 define(
'ODTPHP_PATH', (!isset($dolibarr_lib_ODTPHP_PATH)) ? DOL_DOCUMENT_ROOT.
'/includes/odtphp/' : (empty($dolibarr_lib_ODTPHP_PATH) ?
'' : $dolibarr_lib_ODTPHP_PATH.
'/'));
462if (!defined(
'ODTPHP_PATHTOPCLZIP')) {
463 define(
'ODTPHP_PATHTOPCLZIP', (!isset($dolibarr_lib_ODTPHP_PATHTOPCLZIP)) ? DOL_DOCUMENT_ROOT.
'/includes/odtphp/zip/pclzip/' : (empty($dolibarr_lib_ODTPHP_PATHTOPCLZIP) ?
'' : $dolibarr_lib_ODTPHP_PATHTOPCLZIP.
'/'));
465if (!defined(
'JS_CKEDITOR')) {
466 define(
'JS_CKEDITOR', (!isset($dolibarr_js_CKEDITOR)) ?
'' : (empty($dolibarr_js_CKEDITOR) ?
'' : $dolibarr_js_CKEDITOR.
'/'));
468if (!defined(
'JS_JQUERY')) {
469 define(
'JS_JQUERY', (!isset($dolibarr_js_JQUERY)) ?
'' : (empty($dolibarr_js_JQUERY) ?
'' : $dolibarr_js_JQUERY.
'/'));
471if (!defined(
'JS_JQUERY_UI')) {
472 define(
'JS_JQUERY_UI', (!isset($dolibarr_js_JQUERY_UI)) ?
'' : (empty($dolibarr_js_JQUERY_UI) ?
'' : $dolibarr_js_JQUERY_UI.
'/'));
475if (!defined(
'DOL_DEFAULT_TTF')) {
476 define(
'DOL_DEFAULT_TTF', (!isset($dolibarr_font_DOL_DEFAULT_TTF)) ? DOL_DOCUMENT_ROOT.
'/includes/fonts/Aerial.ttf' : (empty($dolibarr_font_DOL_DEFAULT_TTF) ?
'' : $dolibarr_font_DOL_DEFAULT_TTF));
478if (!defined(
'DOL_DEFAULT_TTF_BOLD')) {
479 define(
'DOL_DEFAULT_TTF_BOLD', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD)) ? DOL_DOCUMENT_ROOT.
'/includes/fonts/AerialBd.ttf' : (empty($dolibarr_font_DOL_DEFAULT_TTF_BOLD) ?
'' : $dolibarr_font_DOL_DEFAULT_TTF_BOLD));
488if ((!empty($dolibarr_main_db_pass) && preg_match(
'/(dolcrypt|crypted):/i', $dolibarr_main_db_pass)) || !empty($dolibarr_main_db_encrypted_pass)) {
489 if (!empty($dolibarr_main_db_pass) && preg_match(
'/crypted:/i', $dolibarr_main_db_pass)) {
490 $dolibarr_main_db_pass = preg_replace(
'/crypted:/i',
'', $dolibarr_main_db_pass);
491 $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass;
492 $dolibarr_main_db_pass =
dol_decode($dolibarr_main_db_pass);
493 } elseif (!empty($dolibarr_main_db_pass) && preg_match(
'/dolcrypt:/i', $dolibarr_main_db_pass)) {
494 $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass;
495 $dolibarr_main_db_pass =
dolDecrypt($dolibarr_main_db_pass, (empty($dolibarr_main_dolcrypt_key) ? (empty($dolibarr_main_instance_unique_id) ?
'' : $dolibarr_main_instance_unique_id) : $dolibarr_main_dolcrypt_key));
497 $dolibarr_main_db_pass =
dol_decode($dolibarr_main_db_encrypted_pass);
global $dolibarr_main_url_root
$dolibarr_main_url_root_alt
dol_session_regenerate_id()
Replace session_regenerate_id()
if(!defined( 'DOL_APPLICATION_TITLE')) if(!defined('DOL_VERSION')) if(!defined( 'EURO')) if(!defined('LOG_DEBUG')) if(defined( 'DOL_INC_FOR_VERSION_ERROR')) dol_session_start()
Replace session_start()
dol_session_rotate($sessionname='')
Destroy and recreate a new session without losing content.
isHTTPS()
Return if we are using a HTTPS connection Check HTTPS (no way to be modified by user but may be empty...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_decode($chain, $key='1')
Decode a base 64 encoded + specific delta change.
dolDecrypt($chain, $key='')
Decode a string with a symmetric encryption.