Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordfenc.../lib
File: wfUtils.php
$timezone = new DateTimeZone($tz);
[3000] Fix | Delete
$dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2
[3001] Fix | Delete
$dt = new DateTime($dtStr, $timezone);
[3002] Fix | Delete
return (int) ($timezone->getOffset($dt) / 60);
[3003] Fix | Delete
}
[3004] Fix | Delete
else {
[3005] Fix | Delete
$gmt = get_option('gmt_offset');
[3006] Fix | Delete
if (!empty($gmt)) {
[3007] Fix | Delete
return (int) ($gmt * 60);
[3008] Fix | Delete
}
[3009] Fix | Delete
}
[3010] Fix | Delete
[3011] Fix | Delete
return 0;
[3012] Fix | Delete
}
[3013] Fix | Delete
[3014] Fix | Delete
/**
[3015] Fix | Delete
* Formats and returns the given timestamp using the time zone set for the WordPress installation.
[3016] Fix | Delete
*
[3017] Fix | Delete
* @param string $format See the PHP docs on DateTime for the format options.
[3018] Fix | Delete
* @param int|bool $timestamp Assumed to be in UTC. If false, defaults to the current timestamp.
[3019] Fix | Delete
* @return string
[3020] Fix | Delete
*/
[3021] Fix | Delete
public static function formatLocalTime($format, $timestamp = false) {
[3022] Fix | Delete
if ($timestamp === false) {
[3023] Fix | Delete
$timestamp = time();
[3024] Fix | Delete
}
[3025] Fix | Delete
[3026] Fix | Delete
$utc = new DateTimeZone('UTC');
[3027] Fix | Delete
$dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2
[3028] Fix | Delete
$dt = new DateTime($dtStr, $utc);
[3029] Fix | Delete
$tz = get_option('timezone_string');
[3030] Fix | Delete
if (!empty($tz)) {
[3031] Fix | Delete
$dt->setTimezone(new DateTimeZone($tz));
[3032] Fix | Delete
}
[3033] Fix | Delete
else {
[3034] Fix | Delete
$gmt = get_option('gmt_offset');
[3035] Fix | Delete
if (!empty($gmt)) {
[3036] Fix | Delete
if (PHP_VERSION_ID < 50510) {
[3037] Fix | Delete
$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
[3038] Fix | Delete
$dt = new DateTime($dtStr, $utc);
[3039] Fix | Delete
}
[3040] Fix | Delete
else {
[3041] Fix | Delete
$direction = ($gmt > 0 ? '+' : '-');
[3042] Fix | Delete
$gmt = abs($gmt);
[3043] Fix | Delete
$h = (int) $gmt;
[3044] Fix | Delete
$m = ($gmt - $h) * 60;
[3045] Fix | Delete
$dt->setTimezone(new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT)));
[3046] Fix | Delete
}
[3047] Fix | Delete
}
[3048] Fix | Delete
}
[3049] Fix | Delete
return $dt->format($format);
[3050] Fix | Delete
}
[3051] Fix | Delete
[3052] Fix | Delete
/**
[3053] Fix | Delete
* Parses the given time string and returns its DateTime with the server's configured time zone.
[3054] Fix | Delete
*
[3055] Fix | Delete
* @param string $timestring
[3056] Fix | Delete
* @return DateTime
[3057] Fix | Delete
*/
[3058] Fix | Delete
public static function parseLocalTime($timestring) {
[3059] Fix | Delete
$utc = new DateTimeZone('UTC');
[3060] Fix | Delete
$tz = get_option('timezone_string');
[3061] Fix | Delete
if (!empty($tz)) {
[3062] Fix | Delete
$tz = new DateTimeZone($tz);
[3063] Fix | Delete
return new DateTime($timestring, $tz);
[3064] Fix | Delete
}
[3065] Fix | Delete
else {
[3066] Fix | Delete
$gmt = get_option('gmt_offset');
[3067] Fix | Delete
if (!empty($gmt)) {
[3068] Fix | Delete
if (PHP_VERSION_ID < 50510) {
[3069] Fix | Delete
$timestamp = strtotime($timestring);
[3070] Fix | Delete
$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
[3071] Fix | Delete
return new DateTime($dtStr, $utc);
[3072] Fix | Delete
}
[3073] Fix | Delete
else {
[3074] Fix | Delete
$direction = ($gmt > 0 ? '+' : '-');
[3075] Fix | Delete
$gmt = abs($gmt);
[3076] Fix | Delete
$h = (int) $gmt;
[3077] Fix | Delete
$m = ($gmt - $h) * 60;
[3078] Fix | Delete
$tz = new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT));
[3079] Fix | Delete
return new DateTime($timestring, $tz);
[3080] Fix | Delete
}
[3081] Fix | Delete
}
[3082] Fix | Delete
}
[3083] Fix | Delete
return new DateTime($timestring);
[3084] Fix | Delete
}
[3085] Fix | Delete
[3086] Fix | Delete
/**
[3087] Fix | Delete
* Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters
[3088] Fix | Delete
* not safe for use in URLs.
[3089] Fix | Delete
*
[3090] Fix | Delete
* @param string $payload
[3091] Fix | Delete
* @return string
[3092] Fix | Delete
*/
[3093] Fix | Delete
public static function base64url_encode($payload) {
[3094] Fix | Delete
$intermediate = base64_encode($payload);
[3095] Fix | Delete
$intermediate = rtrim($intermediate, '=');
[3096] Fix | Delete
$intermediate = str_replace('+', '-', $intermediate);
[3097] Fix | Delete
$intermediate = str_replace('/', '_', $intermediate);
[3098] Fix | Delete
return $intermediate;
[3099] Fix | Delete
}
[3100] Fix | Delete
[3101] Fix | Delete
/**
[3102] Fix | Delete
* Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters
[3103] Fix | Delete
* substituted by base64url_encode.
[3104] Fix | Delete
*
[3105] Fix | Delete
* @param string $payload
[3106] Fix | Delete
* @return string
[3107] Fix | Delete
*/
[3108] Fix | Delete
public static function base64url_decode($payload) {
[3109] Fix | Delete
$intermediate = str_replace('_', '/', $payload);
[3110] Fix | Delete
$intermediate = str_replace('-', '+', $intermediate);
[3111] Fix | Delete
$intermediate = base64_decode($intermediate);
[3112] Fix | Delete
return $intermediate;
[3113] Fix | Delete
}
[3114] Fix | Delete
[3115] Fix | Delete
/**
[3116] Fix | Delete
* Returns a signed JWT for the given payload. Payload is expected to be an array suitable for JSON-encoding.
[3117] Fix | Delete
*
[3118] Fix | Delete
* @param array $payload
[3119] Fix | Delete
* @param int $maxAge How long the JWT will be considered valid.
[3120] Fix | Delete
* @return string
[3121] Fix | Delete
*/
[3122] Fix | Delete
public static function generateJWT($payload, $maxAge = 604800 /* 7 days */) {
[3123] Fix | Delete
$payload['_exp'] = time() + $maxAge;
[3124] Fix | Delete
$key = wfConfig::get('longEncKey');
[3125] Fix | Delete
$header = '{"alg":"HS256","typ":"JWT"}';
[3126] Fix | Delete
$body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload));
[3127] Fix | Delete
$signature = hash_hmac('sha256', $body, $key, true);
[3128] Fix | Delete
return $body . '.' . self::base64url_encode($signature);
[3129] Fix | Delete
}
[3130] Fix | Delete
[3131] Fix | Delete
/**
[3132] Fix | Delete
* Decodes and returns the payload of a JWT. This also validates the signature.
[3133] Fix | Delete
*
[3134] Fix | Delete
* @param string $token
[3135] Fix | Delete
* @return array|bool The decoded payload or false if the token is invalid or fails validation.
[3136] Fix | Delete
*/
[3137] Fix | Delete
public static function decodeJWT($token) {
[3138] Fix | Delete
$components = explode('.', $token);
[3139] Fix | Delete
if (count($components) != 3) {
[3140] Fix | Delete
return false;
[3141] Fix | Delete
}
[3142] Fix | Delete
[3143] Fix | Delete
$key = wfConfig::get('longEncKey');
[3144] Fix | Delete
$body = $components[0] . '.' . $components[1];
[3145] Fix | Delete
$signature = hash_hmac('sha256', $body, $key, true);
[3146] Fix | Delete
$testSignature = self::base64url_decode($components[2]);
[3147] Fix | Delete
if (!hash_equals($signature, $testSignature)) {
[3148] Fix | Delete
return false;
[3149] Fix | Delete
}
[3150] Fix | Delete
[3151] Fix | Delete
$json = self::base64url_decode($components[1]);
[3152] Fix | Delete
$payload = @json_decode($json, true);
[3153] Fix | Delete
if (isset($payload['_exp']) && $payload['_exp'] < time()) {
[3154] Fix | Delete
return false;
[3155] Fix | Delete
}
[3156] Fix | Delete
return $payload;
[3157] Fix | Delete
}
[3158] Fix | Delete
[3159] Fix | Delete
/**
[3160] Fix | Delete
* Split a path into its components
[3161] Fix | Delete
* @param string $path
[3162] Fix | Delete
*/
[3163] Fix | Delete
public static function splitPath($path) {
[3164] Fix | Delete
return preg_split('/[\\/\\\\]/', $path, -1, PREG_SPLIT_NO_EMPTY);
[3165] Fix | Delete
}
[3166] Fix | Delete
[3167] Fix | Delete
/**
[3168] Fix | Delete
* Convert an absolute path to a path relative to $to
[3169] Fix | Delete
* @param string $absolute the absolute path to convert
[3170] Fix | Delete
* @param string $to the absolute path from which to derive the relative path
[3171] Fix | Delete
* @param bool $leadingSlash if true, prepend the resultant URL with a slash
[3172] Fix | Delete
*/
[3173] Fix | Delete
public static function relativePath($absolute, $to, $leadingSlash = false) {
[3174] Fix | Delete
$trailingSlash = in_array(substr($absolute, -1), array('/', '\\'));
[3175] Fix | Delete
$absoluteComponents = self::splitPath($absolute);
[3176] Fix | Delete
$toComponents = self::splitPath($to);
[3177] Fix | Delete
$relativeComponents = array();
[3178] Fix | Delete
do {
[3179] Fix | Delete
$currentAbsolute = array_shift($absoluteComponents);
[3180] Fix | Delete
$currentTo = array_shift($toComponents);
[3181] Fix | Delete
} while($currentAbsolute === $currentTo && $currentAbsolute !== null);
[3182] Fix | Delete
while ($currentTo !== null) {
[3183] Fix | Delete
array_push($relativeComponents, '..');
[3184] Fix | Delete
$currentTo = array_shift($toComponents);
[3185] Fix | Delete
}
[3186] Fix | Delete
while ($currentAbsolute !== null) {
[3187] Fix | Delete
array_push($relativeComponents, $currentAbsolute);
[3188] Fix | Delete
$currentAbsolute = array_shift($absoluteComponents);
[3189] Fix | Delete
}
[3190] Fix | Delete
return implode(array(
[3191] Fix | Delete
$leadingSlash ? '/' : '',
[3192] Fix | Delete
implode('/', $relativeComponents),
[3193] Fix | Delete
($trailingSlash && (count($relativeComponents) > 0 || !$leadingSlash)) ? '/' : ''
[3194] Fix | Delete
));
[3195] Fix | Delete
}
[3196] Fix | Delete
[3197] Fix | Delete
/**
[3198] Fix | Delete
* Determine the effective port given the output of parse_url
[3199] Fix | Delete
* @param array $urlComponents
[3200] Fix | Delete
* @return int the resolved port number
[3201] Fix | Delete
*/
[3202] Fix | Delete
private static function resolvePort($urlComponents) {
[3203] Fix | Delete
if (array_key_exists('port', $urlComponents) && !empty($urlComponents['port'])) {
[3204] Fix | Delete
return $urlComponents['port'];
[3205] Fix | Delete
}
[3206] Fix | Delete
if (array_key_exists('scheme', $urlComponents) && $urlComponents['scheme'] === 'https') {
[3207] Fix | Delete
return 443;
[3208] Fix | Delete
}
[3209] Fix | Delete
return 80;
[3210] Fix | Delete
}
[3211] Fix | Delete
[3212] Fix | Delete
/**
[3213] Fix | Delete
* Check if two site URLs identify the same site
[3214] Fix | Delete
* @param string $a first url
[3215] Fix | Delete
* @param string $b second url
[3216] Fix | Delete
* @param array $ignoredSubdomains An array of subdomains to ignore when matching (e.g., www)
[3217] Fix | Delete
* @return bool true if the URLs match, false otherwise
[3218] Fix | Delete
*/
[3219] Fix | Delete
public static function compareSiteUrls($a, $b, $ignoredSubdomains = array()) {
[3220] Fix | Delete
$patterns = array_map(function($p) { return '/^' . preg_quote($p, '/') . '\\./i'; }, $ignoredSubdomains);
[3221] Fix | Delete
[3222] Fix | Delete
$componentsA = parse_url($a);
[3223] Fix | Delete
if (isset($componentsA['host'])) { $componentsA['host'] = preg_replace($patterns, '', $componentsA['host']); }
[3224] Fix | Delete
$componentsB = parse_url($b);
[3225] Fix | Delete
if (isset($componentsB['host'])) { $componentsB['host'] = preg_replace($patterns, '', $componentsB['host']); }
[3226] Fix | Delete
foreach (array('host', 'port', 'path') as $component) {
[3227] Fix | Delete
$valueA = array_key_exists($component, $componentsA) ? $componentsA[$component] : null;
[3228] Fix | Delete
$valueB = array_key_exists($component, $componentsB) ? $componentsB[$component] : null;
[3229] Fix | Delete
if ($valueA !== $valueB) {
[3230] Fix | Delete
if ($component === 'port') {
[3231] Fix | Delete
$portA = self::resolvePort($componentsA);
[3232] Fix | Delete
$portB = self::resolvePort($componentsB);
[3233] Fix | Delete
if ($portA !== $portB)
[3234] Fix | Delete
return false;
[3235] Fix | Delete
}
[3236] Fix | Delete
else {
[3237] Fix | Delete
return false;
[3238] Fix | Delete
}
[3239] Fix | Delete
}
[3240] Fix | Delete
}
[3241] Fix | Delete
return true;
[3242] Fix | Delete
}
[3243] Fix | Delete
[3244] Fix | Delete
public static function getHomePath() {
[3245] Fix | Delete
if (!function_exists('get_home_path')) {
[3246] Fix | Delete
include_once(ABSPATH . 'wp-admin/includes/file.php');
[3247] Fix | Delete
}
[3248] Fix | Delete
if (WF_IS_FLYWHEEL)
[3249] Fix | Delete
return trailingslashit($_SERVER['DOCUMENT_ROOT']);
[3250] Fix | Delete
return get_home_path();
[3251] Fix | Delete
}
[3252] Fix | Delete
[3253] Fix | Delete
public static function includeOnceIfPresent($path) {
[3254] Fix | Delete
if (file_exists($path)) {
[3255] Fix | Delete
@include_once($path);
[3256] Fix | Delete
return @include_once($path); //Calling `include_once` for an already included file will return true
[3257] Fix | Delete
}
[3258] Fix | Delete
return false;
[3259] Fix | Delete
}
[3260] Fix | Delete
[3261] Fix | Delete
public static function isCurlSupported() {
[3262] Fix | Delete
if (self::includeOnceIfPresent(ABSPATH . 'wp-includes/class-wp-http-curl.php'))
[3263] Fix | Delete
return WP_Http_Curl::test();
[3264] Fix | Delete
return false;
[3265] Fix | Delete
}
[3266] Fix | Delete
[3267] Fix | Delete
private static function isValidJsonValue($value) {
[3268] Fix | Delete
return json_encode($value) !== false;
[3269] Fix | Delete
}
[3270] Fix | Delete
[3271] Fix | Delete
private static function filterInvalidJsonValues($data, &$modified, &$valid = null) {
[3272] Fix | Delete
if (is_array($data)) {
[3273] Fix | Delete
$modified = array();
[3274] Fix | Delete
$filtered = array();
[3275] Fix | Delete
$valid = true;
[3276] Fix | Delete
foreach ($data as $key => $value) {
[3277] Fix | Delete
$value = self::filterInvalidJsonValues($value, $itemModified, $itemValid);
[3278] Fix | Delete
if (($itemValid || $itemModified) && self::isValidJsonValue(array($key => $value))) {
[3279] Fix | Delete
$filtered[$key] = $value;
[3280] Fix | Delete
if ($itemModified)
[3281] Fix | Delete
$modified[$key] = $itemModified;
[3282] Fix | Delete
}
[3283] Fix | Delete
else {
[3284] Fix | Delete
$valid = false;
[3285] Fix | Delete
}
[3286] Fix | Delete
}
[3287] Fix | Delete
return $filtered;
[3288] Fix | Delete
}
[3289] Fix | Delete
else {
[3290] Fix | Delete
$modified = false;
[3291] Fix | Delete
$valid = self::isValidJsonValue($data);
[3292] Fix | Delete
if ($valid) {
[3293] Fix | Delete
return $data;
[3294] Fix | Delete
}
[3295] Fix | Delete
else if (is_string($data)) {
[3296] Fix | Delete
$modified = true;
[3297] Fix | Delete
return base64_encode($data);
[3298] Fix | Delete
}
[3299] Fix | Delete
else {
[3300] Fix | Delete
return null;
[3301] Fix | Delete
}
[3302] Fix | Delete
}
[3303] Fix | Delete
}
[3304] Fix | Delete
[3305] Fix | Delete
public static function jsonEncodeSafely($data) {
[3306] Fix | Delete
$encoded = json_encode($data);
[3307] Fix | Delete
if ($encoded === false) {
[3308] Fix | Delete
$data = self::filterInvalidJsonValues($data, $modified);
[3309] Fix | Delete
if ($modified)
[3310] Fix | Delete
$data['__modified__'] = $modified;
[3311] Fix | Delete
$encoded = json_encode($data);
[3312] Fix | Delete
}
[3313] Fix | Delete
return $encoded;
[3314] Fix | Delete
}
[3315] Fix | Delete
[3316] Fix | Delete
/**
[3317] Fix | Delete
* Convenience function to extract a matched pattern from a string. If $pattern has no matching groups, the entire
[3318] Fix | Delete
* matched portion is returned. If it has at least one matching group, the first one is returned (others are
[3319] Fix | Delete
* ignored). If there is no match, false is returned.
[3320] Fix | Delete
*
[3321] Fix | Delete
* @param string $pattern
[3322] Fix | Delete
* @param string $subject
[3323] Fix | Delete
* @param bool $expandToLine Whether or not to expand the captured value to include the entire line's contents
[3324] Fix | Delete
* @return false|string
[3325] Fix | Delete
*/
[3326] Fix | Delete
public static function pregExtract($pattern, $subject, $expandToLine = false) {
[3327] Fix | Delete
if (preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE)) {
[3328] Fix | Delete
if (count($matches) > 1) {
[3329] Fix | Delete
$start = $matches[1][1];
[3330] Fix | Delete
$text = $matches[1][0];
[3331] Fix | Delete
$end = $start + strlen($text);
[3332] Fix | Delete
}
[3333] Fix | Delete
else {
[3334] Fix | Delete
$start = $matches[0][1];
[3335] Fix | Delete
$text = $matches[0][0];
[3336] Fix | Delete
$end = $start + strlen($text);
[3337] Fix | Delete
}
[3338] Fix | Delete
[3339] Fix | Delete
if ($expandToLine) {
[3340] Fix | Delete
if (preg_match_all('/[\r\n]/', substr($subject, 0, $start), $matches, PREG_OFFSET_CAPTURE)) {
[3341] Fix | Delete
$start = $matches[0][count($matches[0]) - 1][1] + 1;
[3342] Fix | Delete
}
[3343] Fix | Delete
else {
[3344] Fix | Delete
$start = 0;
[3345] Fix | Delete
}
[3346] Fix | Delete
[3347] Fix | Delete
if (preg_match('/[\r\n]/', $subject, $matches, PREG_OFFSET_CAPTURE, $end)) {
[3348] Fix | Delete
$end = $matches[0][1];
[3349] Fix | Delete
}
[3350] Fix | Delete
else {
[3351] Fix | Delete
$end = strlen($subject) - 0;
[3352] Fix | Delete
}
[3353] Fix | Delete
[3354] Fix | Delete
$text = substr($subject, $start, $end - $start);
[3355] Fix | Delete
}
[3356] Fix | Delete
[3357] Fix | Delete
return $text;
[3358] Fix | Delete
}
[3359] Fix | Delete
return false;
[3360] Fix | Delete
}
[3361] Fix | Delete
[3362] Fix | Delete
/**
[3363] Fix | Delete
* Returns whether or not MySQLi should be used directly when needed. Returns true if there's a valid DB handle,
[3364] Fix | Delete
* our database test succeeded, our constant is not set to prevent it, and then either $wpdb indicates it's using
[3365] Fix | Delete
* mysqli (older WordPress versions) or we're on PHP 7+ (only mysqli is ever used).
[3366] Fix | Delete
*
[3367] Fix | Delete
* @return bool
[3368] Fix | Delete
*/
[3369] Fix | Delete
public static function useMySQLi() {
[3370] Fix | Delete
global $wpdb;
[3371] Fix | Delete
$dbh = $wpdb->dbh;
[3372] Fix | Delete
$useMySQLi = (is_object($dbh) && (PHP_MAJOR_VERSION >= 7 || $wpdb->use_mysqli) && wfConfig::get('allowMySQLi', true) && WORDFENCE_ALLOW_DIRECT_MYSQLI);
[3373] Fix | Delete
return $useMySQLi;
[3374] Fix | Delete
}
[3375] Fix | Delete
}
[3376] Fix | Delete
[3377] Fix | Delete
// GeoIP lib uses these as well
[3378] Fix | Delete
if (!function_exists('inet_ntop')) {
[3379] Fix | Delete
function inet_ntop($ip) {
[3380] Fix | Delete
return wfUtils::_inet_ntop($ip);
[3381] Fix | Delete
}
[3382] Fix | Delete
}
[3383] Fix | Delete
if (!function_exists('inet_pton')) {
[3384] Fix | Delete
function inet_pton($ip) {
[3385] Fix | Delete
return wfUtils::_inet_pton($ip);
[3386] Fix | Delete
}
[3387] Fix | Delete
}
[3388] Fix | Delete
[3389] Fix | Delete
[3390] Fix | Delete
class wfWebServerInfo {
[3391] Fix | Delete
[3392] Fix | Delete
const APACHE = 1;
[3393] Fix | Delete
const NGINX = 2;
[3394] Fix | Delete
const LITESPEED = 4;
[3395] Fix | Delete
const IIS = 8;
[3396] Fix | Delete
[3397] Fix | Delete
private $handler;
[3398] Fix | Delete
private $software;
[3399] Fix | Delete
private $softwareName;
[3400] Fix | Delete
[3401] Fix | Delete
/**
[3402] Fix | Delete
*
[3403] Fix | Delete
*/
[3404] Fix | Delete
public static function createFromEnvironment() {
[3405] Fix | Delete
$serverInfo = new self;
[3406] Fix | Delete
$sapi = php_sapi_name();
[3407] Fix | Delete
if (WF_IS_FLYWHEEL) {
[3408] Fix | Delete
$serverInfo->setSoftware(self::NGINX);
[3409] Fix | Delete
$serverInfo->setSoftwareName('Flywheel');
[3410] Fix | Delete
}
[3411] Fix | Delete
else if (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false) {
[3412] Fix | Delete
$serverInfo->setSoftware(self::IIS);
[3413] Fix | Delete
$serverInfo->setSoftwareName('iis');
[3414] Fix | Delete
}
[3415] Fix | Delete
else if (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) {
[3416] Fix | Delete
$serverInfo->setSoftware(self::NGINX);
[3417] Fix | Delete
$serverInfo->setSoftwareName('nginx');
[3418] Fix | Delete
}
[3419] Fix | Delete
else if (stripos($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false || $sapi == 'litespeed') {
[3420] Fix | Delete
$serverInfo->setSoftware(self::LITESPEED);
[3421] Fix | Delete
$serverInfo->setSoftwareName('litespeed');
[3422] Fix | Delete
}
[3423] Fix | Delete
else if (stripos($_SERVER['SERVER_SOFTWARE'], 'apache') !== false) {
[3424] Fix | Delete
$serverInfo->setSoftware(self::APACHE);
[3425] Fix | Delete
$serverInfo->setSoftwareName('apache');
[3426] Fix | Delete
}
[3427] Fix | Delete
[3428] Fix | Delete
$serverInfo->setHandler($sapi);
[3429] Fix | Delete
[3430] Fix | Delete
return $serverInfo;
[3431] Fix | Delete
}
[3432] Fix | Delete
[3433] Fix | Delete
/**
[3434] Fix | Delete
* @return bool
[3435] Fix | Delete
*/
[3436] Fix | Delete
public function isApache() {
[3437] Fix | Delete
return $this->getSoftware() === self::APACHE;
[3438] Fix | Delete
}
[3439] Fix | Delete
[3440] Fix | Delete
/**
[3441] Fix | Delete
* @return bool
[3442] Fix | Delete
*/
[3443] Fix | Delete
public function isNGINX() {
[3444] Fix | Delete
return $this->getSoftware() === self::NGINX;
[3445] Fix | Delete
}
[3446] Fix | Delete
[3447] Fix | Delete
/**
[3448] Fix | Delete
* @return bool
[3449] Fix | Delete
*/
[3450] Fix | Delete
public function isLiteSpeed() {
[3451] Fix | Delete
return $this->getSoftware() === self::LITESPEED;
[3452] Fix | Delete
}
[3453] Fix | Delete
[3454] Fix | Delete
/**
[3455] Fix | Delete
* @return bool
[3456] Fix | Delete
*/
[3457] Fix | Delete
public function isIIS() {
[3458] Fix | Delete
return $this->getSoftware() === self::IIS;
[3459] Fix | Delete
}
[3460] Fix | Delete
[3461] Fix | Delete
/**
[3462] Fix | Delete
* @return bool
[3463] Fix | Delete
*/
[3464] Fix | Delete
public function isApacheModPHP() {
[3465] Fix | Delete
return $this->isApache() && function_exists('apache_get_modules');
[3466] Fix | Delete
}
[3467] Fix | Delete
[3468] Fix | Delete
/**
[3469] Fix | Delete
* Not sure if this can be implemented at the PHP level.
[3470] Fix | Delete
* @return bool
[3471] Fix | Delete
*/
[3472] Fix | Delete
public function isApacheSuPHP() {
[3473] Fix | Delete
return $this->isApache() && $this->isCGI() &&
[3474] Fix | Delete
function_exists('posix_getuid') &&
[3475] Fix | Delete
getmyuid() === posix_getuid();
[3476] Fix | Delete
}
[3477] Fix | Delete
[3478] Fix | Delete
/**
[3479] Fix | Delete
* @return bool
[3480] Fix | Delete
*/
[3481] Fix | Delete
public function isCGI() {
[3482] Fix | Delete
return !$this->isFastCGI() && stripos($this->getHandler(), 'cgi') !== false;
[3483] Fix | Delete
}
[3484] Fix | Delete
[3485] Fix | Delete
/**
[3486] Fix | Delete
* @return bool
[3487] Fix | Delete
*/
[3488] Fix | Delete
public function isFastCGI() {
[3489] Fix | Delete
return stripos($this->getHandler(), 'fastcgi') !== false || stripos($this->getHandler(), 'fpm-fcgi') !== false;
[3490] Fix | Delete
}
[3491] Fix | Delete
[3492] Fix | Delete
/**
[3493] Fix | Delete
* @return mixed
[3494] Fix | Delete
*/
[3495] Fix | Delete
public function getHandler() {
[3496] Fix | Delete
return $this->handler;
[3497] Fix | Delete
}
[3498] Fix | Delete
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function