PHP_VERSION_ID is int but not defined. (PHP-FPM 5.4.4)
本问题已经有最佳答案,请猛点这里访问。
标题解释了它,但这是我试图做的:
1 2 3 | if (!defined(PHP_VERSION_ID) || PHP_VERSION_ID < 50400) { trigger_error('PHP version 5.4 or above is required to run this code. Please upgrade to continue...', E_USER_ERROR); } |
出于某种原因,这是正在发生的事情:
1 2 |
根据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php // PHP_VERSION_ID is available as of PHP 5.2.7, if our // version is lower than that, then emulate it if (!defined('PHP_VERSION_ID')) { $version = explode('.', PHP_VERSION); define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2])); } // PHP_VERSION_ID is defined as a number, where the higher the number // is, the newer a PHP version is used. It's defined as used in the above // expression: // // $version_id = $major_version * 10000 + $minor_version * 100 + $release_version; // // Now with PHP_VERSION_ID we can check for features this PHP version // may have, this doesn't require to use version_compare() everytime // you check if the current PHP version may not support a feature. // // For example, we may here define the PHP_VERSION_* constants thats // not available in versions prior to 5.2.7 if (PHP_VERSION_ID < 50207) { define('PHP_MAJOR_VERSION', $version[0]); define('PHP_MINOR_VERSION', $version[1]); define('PHP_RELEASE_VERSION', $version[2]); // and so on, ... } ?> |
关于为什么这不起作用的任何想法? 我在Debian Wheezy上运行PHP-FPM 5.4.4。
这就是这里发生的事情:
1 |
这是真的,PHP_VERSION_ID的值在您的情况下是50404。
现在你实际上是在询问已定义的(50404),并返回false。 常数得到了解决它的价值。 如果您想知道是否存在具有该名称的常量,请将其设置为引号:
如果未定义,则不能使用定义 - 因此必须将其作为字符串进行测试:
1 2 3 | if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50400) { trigger_error('PHP version 5.4 or above is required to run this code. Please upgrade to continue...', E_USER_ERROR); } |