@@ -55,7 +55,7 @@ class TCPDF_STATIC {
55
55
* Current TCPDF version.
56
56
* @private static
57
57
*/
58
- private static $ tcpdf_version = '6.2.10 ' ;
58
+ private static $ tcpdf_version = '6.2.11 ' ;
59
59
60
60
/**
61
61
* String alias for total number of pages.
@@ -2476,77 +2476,90 @@ public static function fopenLocal($filename, $mode) {
2476
2476
* @public static
2477
2477
*/
2478
2478
public static function fileGetContents ($ file ) {
2479
- //$file = html_entity_decode($file);
2480
- // array of possible alternative paths/URLs
2481
2479
$ alt = array ($ file );
2482
- // replace URL relative path with full real server path
2480
+ //
2483
2481
if ((strlen ($ file ) > 1 )
2484
- AND ($ file [0 ] == '/ ' )
2485
- AND ($ file [1 ] != '/ ' )
2486
- AND !empty ($ _SERVER ['DOCUMENT_ROOT ' ])
2487
- AND ($ _SERVER ['DOCUMENT_ROOT ' ] != '/ ' )) {
2488
- $ findroot = strpos ($ file , $ _SERVER ['DOCUMENT_ROOT ' ]);
2489
- if (($ findroot === false ) OR ($ findroot > 1 )) {
2490
- if (substr ($ _SERVER ['DOCUMENT_ROOT ' ], -1 ) == '/ ' ) {
2491
- $ tmp = substr ($ _SERVER ['DOCUMENT_ROOT ' ], 0 , -1 ).$ file ;
2492
- } else {
2493
- $ tmp = $ _SERVER ['DOCUMENT_ROOT ' ].$ file ;
2494
- }
2495
- $ alt [] = htmlspecialchars_decode (urldecode ($ tmp ));
2496
- }
2497
- }
2498
- // URL mode
2482
+ && ($ file [0 ] === '/ ' )
2483
+ && ($ file [1 ] !== '/ ' )
2484
+ && !empty ($ _SERVER ['DOCUMENT_ROOT ' ])
2485
+ && ($ _SERVER ['DOCUMENT_ROOT ' ] !== '/ ' )
2486
+ ) {
2487
+ $ findroot = strpos ($ file , $ _SERVER ['DOCUMENT_ROOT ' ]);
2488
+ if (($ findroot === false ) || ($ findroot > 1 )) {
2489
+ $ alt [] = htmlspecialchars_decode (urldecode ($ _SERVER ['DOCUMENT_ROOT ' ].$ file ));
2490
+ }
2491
+ }
2492
+ //
2493
+ $ protocol = 'http ' ;
2494
+ if (!empty ($ _SERVER ['HTTPS ' ]) && (strtolower ($ _SERVER ['HTTPS ' ]) != 'off ' )) {
2495
+ $ protocol .= 's ' ;
2496
+ }
2497
+ //
2499
2498
$ url = $ file ;
2500
- // check for missing protocol
2501
- if (preg_match ('%^/{2}% ' , $ url )) {
2502
- if (preg_match ('%^([^:]+:)//%i ' , K_PATH_URL , $ match )) {
2503
- $ url = $ match [1 ].str_replace (' ' , '%20 ' , $ url );
2504
- $ alt [] = $ url ;
2499
+ if (preg_match ('%^//% ' , $ url ) && !empty ($ _SERVER ['HTTP_HOST ' ])) {
2500
+ $ url = $ protocol .': ' .str_replace (' ' , '%20 ' , $ url );
2501
+ }
2502
+ $ url = htmlspecialchars_decode ($ url );
2503
+ $ alt [] = $ url ;
2504
+ //
2505
+ if (preg_match ('%^(https?)://% ' , $ url )
2506
+ && empty ($ _SERVER ['HTTP_HOST ' ])
2507
+ && empty ($ _SERVER ['DOCUMENT_ROOT ' ])
2508
+ ) {
2509
+ $ urldata = parse_url ($ url );
2510
+ if (empty ($ urldata ['query ' ])) {
2511
+ $ host = $ protocol .':// ' .$ _SERVER ['HTTP_HOST ' ];
2512
+ if (strpos ($ url , $ host ) === 0 ) {
2513
+ // convert URL to full server path
2514
+ $ tmp = str_replace ($ host , $ _SERVER ['DOCUMENT_ROOT ' ], $ url );
2515
+ $ alt [] = htmlspecialchars_decode (urldecode ($ tmp ));
2516
+ }
2505
2517
}
2506
2518
}
2507
- $ urldata = @parse_url ($ url );
2508
- if (!isset ($ urldata ['query ' ]) OR (strlen ($ urldata ['query ' ]) <= 0 )) {
2509
- if (K_PATH_URL AND (strpos ($ url , K_PATH_URL ) === 0 )) {
2510
- // convert URL to full server path
2511
- $ tmp = str_replace (K_PATH_URL , K_PATH_MAIN , $ url );
2512
- $ tmp = htmlspecialchars_decode (urldecode ($ tmp ));
2513
- $ alt [] = $ tmp ;
2519
+ //
2520
+ if (isset ($ _SERVER ['SCRIPT_URI ' ])
2521
+ && !preg_match ('%^(https?|ftp)://% ' , $ file )
2522
+ && !preg_match ('%^//% ' , $ file )
2523
+ ) {
2524
+ $ urldata = @parse_url ($ _SERVER ['SCRIPT_URI ' ]);
2525
+ return $ urldata ['scheme ' ].':// ' .$ urldata ['host ' ].(($ file [0 ] == '/ ' ) ? '' : '/ ' ).$ file ;
2526
+ }
2527
+ //
2528
+ $ alt = array_unique ($ alt );
2529
+ //var_dump($alt);exit;//DEBUG
2530
+ foreach ($ alt as $ path ) {
2531
+ $ ret = @file_get_contents ($ path );
2532
+ if ($ ret !== false ) {
2533
+ return $ ret ;
2514
2534
}
2515
- }
2516
- if (isset ($ _SERVER ['SCRIPT_URI ' ])) {
2517
- $ urldata = @parse_url ($ _SERVER ['SCRIPT_URI ' ]);
2518
- $ alt [] = $ urldata ['scheme ' ].':// ' .$ urldata ['host ' ].(($ file [0 ] == '/ ' ) ? '' : '/ ' ).$ file ;
2519
- }
2520
- foreach ($ alt as $ f ) {
2521
- $ ret = @file_get_contents ($ f );
2522
- if (($ ret === FALSE )
2523
- AND !ini_get ('allow_url_fopen ' )
2524
- AND function_exists ('curl_init ' )
2525
- AND preg_match ('%^(https?|ftp)://% ' , $ f )) {
2535
+ // try to use CURL for URLs
2536
+ if (!ini_get ('allow_url_fopen ' )
2537
+ && function_exists ('curl_init ' )
2538
+ && preg_match ('%^(https?|ftp)://% ' , $ path )
2539
+ ) {
2526
2540
// try to get remote file data using cURL
2527
- $ cs = curl_init (); // curl session
2528
- curl_setopt ($ cs , CURLOPT_URL , $ f );
2529
- curl_setopt ($ cs , CURLOPT_BINARYTRANSFER , true );
2530
- curl_setopt ($ cs , CURLOPT_FAILONERROR , true );
2531
- curl_setopt ($ cs , CURLOPT_RETURNTRANSFER , true );
2532
- if ((ini_get ('open_basedir ' ) == '' ) AND (!ini_get ('safe_mode ' ))) {
2533
- curl_setopt ($ cs , CURLOPT_FOLLOWLOCATION , true );
2541
+ $ crs = curl_init ();
2542
+ curl_setopt ($ crs , CURLOPT_URL , $ path );
2543
+ curl_setopt ($ crs , CURLOPT_BINARYTRANSFER , true );
2544
+ curl_setopt ($ crs , CURLOPT_FAILONERROR , true );
2545
+ curl_setopt ($ crs , CURLOPT_RETURNTRANSFER , true );
2546
+ if ((ini_get ('open_basedir ' ) == '' ) && (!ini_get ('safe_mode ' ))) {
2547
+ curl_setopt ($ crs , CURLOPT_FOLLOWLOCATION , true );
2548
+ }
2549
+ curl_setopt ($ crs , CURLOPT_CONNECTTIMEOUT , 5 );
2550
+ curl_setopt ($ crs , CURLOPT_TIMEOUT , 30 );
2551
+ curl_setopt ($ crs , CURLOPT_SSL_VERIFYPEER , false );
2552
+ curl_setopt ($ crs , CURLOPT_SSL_VERIFYHOST , false );
2553
+ curl_setopt ($ crs , CURLOPT_USERAGENT , 'tc-lib-file ' );
2554
+ $ ret = curl_exec ($ crs );
2555
+ curl_close ($ crs );
2556
+ if ($ ret !== false ) {
2557
+ return $ ret ;
2534
2558
}
2535
- curl_setopt ($ cs , CURLOPT_CONNECTTIMEOUT , 5 );
2536
- curl_setopt ($ cs , CURLOPT_TIMEOUT , 30 );
2537
- curl_setopt ($ cs , CURLOPT_SSL_VERIFYPEER , false );
2538
- curl_setopt ($ cs , CURLOPT_SSL_VERIFYHOST , false );
2539
- curl_setopt ($ cs , CURLOPT_USERAGENT , 'TCPDF ' );
2540
- $ ret = curl_exec ($ cs );
2541
- curl_close ($ cs );
2542
- }
2543
- if ($ ret !== FALSE ) {
2544
- break ;
2545
2559
}
2546
2560
}
2547
- return $ ret ;
2561
+ return false ;
2548
2562
}
2549
-
2550
2563
} // END OF TCPDF_STATIC CLASS
2551
2564
2552
2565
//============================================================+
0 commit comments