},
"include-path": ["vendor/tecnickcom"],
"require": {
+ "php": "~7.0",
"dompdf/dompdf" : "0.8.*",
"electrolinux/phpquery": "^0.9.6",
"symfony/config": "^2.8.44 || ~3.0",
errorDisplayPage($errorTitle, $errorMsg, FALSE);
}
+$composerJsonPath = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'composer.json';
+if (file_exists($composerJsonPath)) {
+ $composerJson = json_decode(file_get_contents($composerJsonPath), 1);
+ $minPhpVer = preg_replace(';[~^];', '', $composerJson['require']['php']);
+ if (!version_compare(phpversion(), $minPhpVer, '>=')) {
+ errorDisplayPage('PHP Version Requirement', sprintf("CiviCRM requires PHP %s+. The web server is running PHP %s.", $minPhpVer, phpversion()), FALSE);
+ }
+}
+
$pkgPath = $crmPath . DIRECTORY_SEPARATOR . 'packages';
require_once $crmPath . '/CRM/Core/ClassLoader.php';
--- /dev/null
+<?php
+
+/**
+ * Class CRM_Upgrade_FormTest
+ * @group headless
+ */
+class CRM_Upgrade_FormTest extends CiviUnitTestCase {
+
+ /**
+ * "php" requirement (composer.json) should match MINIMUM_PHP_VERSION (CRM/Upgrade/Form.php).
+ */
+ public function testComposerRequirementMatch() {
+ global $civicrm_root;
+ $composerJsonPath = "{$civicrm_root}/composer.json";
+ $this->assertFileExists($composerJsonPath);
+ $composerJson = json_decode(file_get_contents($composerJsonPath), 1);
+ $composerJsonRequirePhp = preg_replace(';[~^];', '', $composerJson['require']['php']);
+ $actualMajorMinor = preg_replace(';^[\^]*(\d+\.\d+)\..*$;', '\1', $composerJsonRequirePhp);
+ $expectMajorMinor = preg_replace(';^[\^]*(\d+\.\d+)\..*$;', '\1', \CRM_Upgrade_Form::MINIMUM_PHP_VERSION);
+ $this->assertEquals($expectMajorMinor, $actualMajorMinor, "The PHP version requirements in CRM_Upgrade_Form ($expectMajorMinor) and composer.json ($actualMajorMinor) should specify same major+minor versions.");
+ }
+
+}