✅ Fixed bulk conversion getting stuck on missing files ✅ Added robust error handling and timeout protection ✅ Improved JavaScript response parsing ✅ Added file existence validation ✅ Fixed missing PHP class imports ✅ Added comprehensive try-catch error recovery 🔧 Key fixes: - File existence checks before conversion attempts - 30-second timeout protection per file - Graceful handling of 500 errors and JSON parsing issues - Automatic continuation to next file on failures - Cache busting for JavaScript updates 🎯 Result: Bulk conversion now completes successfully even with missing files 🚀 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
123 lines
3.8 KiB
PHP
123 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace WebPExpress;
|
|
|
|
class PlatformInfo
|
|
{
|
|
|
|
public static function isMicrosoftIis()
|
|
{
|
|
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
|
|
return ( strpos( $server, 'microsoft-iis') !== false );
|
|
}
|
|
|
|
/**
|
|
* Check if Apache handles the PHP requests (Note that duel setups are possible and ie Nginx could be handling the image requests).
|
|
*/
|
|
public static function isApache()
|
|
{
|
|
return (stripos($_SERVER['SERVER_SOFTWARE'], 'apache') !== false);
|
|
}
|
|
|
|
public static function isLiteSpeed()
|
|
{
|
|
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
|
|
return ( strpos( $server, 'litespeed') !== false );
|
|
}
|
|
|
|
public static function isNginx()
|
|
{
|
|
return (stripos($_SERVER["SERVER_SOFTWARE"], 'nginx') !== false);
|
|
}
|
|
|
|
public static function isApacheOrLiteSpeed()
|
|
{
|
|
return self::isApache() || self::isLiteSpeed();
|
|
}
|
|
|
|
/**
|
|
* Check if an Apache module is available.
|
|
*
|
|
* If apache_get_modules() exists, it is used. That function is however only available in mod_php installs.
|
|
* Otherwise the Wordpress function "apache_mod_loaded" is tried, which examines phpinfo() output.
|
|
* However, it seems there is no module output on php-fpm setups.
|
|
* So on php-fpm, we cannot come with an answer.
|
|
* https://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-enabled-in-php
|
|
*
|
|
* @param string $mod Name of module - ie "mod_rewrite"
|
|
* @return boolean|null Return if module is available, or null if indeterminate
|
|
*/
|
|
public static function gotApacheModule($mod)
|
|
{
|
|
if (function_exists('apache_get_modules')) {
|
|
return in_array($mod, apache_get_modules());
|
|
}
|
|
|
|
// Revert to Wordpress method, which examines output from phpinfo as well
|
|
if (function_exists('apache_mod_loaded')) {
|
|
$result = apache_mod_loaded($mod, null);
|
|
|
|
// If we got a real result, return it.
|
|
if ($result != null) {
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
// We could run shell_exec("apachectl -l"), as suggested here:
|
|
// https://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-enabled-in-php
|
|
// But it does not seem to return all modules in my php-fpm setup.
|
|
|
|
// Currently we got no more tools in this function...
|
|
// you might want to take a look at the "htaccess_capability_tester" library...
|
|
return null;
|
|
|
|
}
|
|
|
|
/**
|
|
* It is not always possible to determine if apache has a given module...
|
|
* We shall not fool anyone into thinking otherwise by providing a "got" method like Wordpress does...
|
|
*/
|
|
public static function definitelyGotApacheModule($mod)
|
|
{
|
|
return (self::gotApacheModule($mod) === true);
|
|
}
|
|
|
|
public static function definitelyNotGotApacheModule($mod)
|
|
{
|
|
return (self::gotApacheModule($mod) === false);
|
|
}
|
|
|
|
/**
|
|
* Check if mod_rewrite or IIS rewrite is available.
|
|
*
|
|
* @return boolean|null Return bool if it can be determined, or null if not
|
|
*/
|
|
public static function gotRewriteModule()
|
|
{
|
|
$gotModRewrite = self::gotApacheModule('mod_rewrite');
|
|
if (!is_null($gotModRewrite)) {
|
|
return $gotModRewrite;
|
|
}
|
|
|
|
// Got the IIS check here: https://stackoverflow.com/a/21249745/842756
|
|
// but have not tested it...
|
|
if (isset($_SERVER['IIS_UrlRewriteModule'])) {
|
|
return true;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
public static function definitelyNotGotModRewrite()
|
|
{
|
|
return self::definitelyNotGotApacheModule('mod_rewrite');
|
|
}
|
|
|
|
public static function definitelyGotModEnv()
|
|
{
|
|
return self::definitelyGotApacheModule('mod_env');
|
|
}
|
|
|
|
|
|
}
|