Civi\API\ExternalBatch - Verify that $_ENV is working
authorTim Otten <totten@civicrm.org>
Thu, 29 Dec 2016 21:59:30 +0000 (13:59 -0800)
committerTim Otten <totten@civicrm.org>
Thu, 29 Dec 2016 22:03:10 +0000 (14:03 -0800)
This aims to improve error messaging in the situation where a Debian/Ubuntu
user runs `api_v3_JobProcessMailingTest` (and, theoretically, in any
situation where `ExternalBatch` runs without the required `$_ENV`).

For more background, see https://github.com/symfony/symfony/issues/18796

Civi/API/ExternalBatch.php

index 2e6507e66946c696408550b3ab6bf7f8a90d2983..5e48a4a3f83249bab6b4a1ac707e4f7c4949b4c7 100644 (file)
@@ -52,6 +52,11 @@ class ExternalBatch {
     $this->settingsPath = defined('CIVICRM_SETTINGS_PATH') ? CIVICRM_SETTINGS_PATH : NULL;
     $this->defaultParams = $defaultParams;
     $this->env = $_ENV;
+    if (empty($_ENV)) {
+      // FIXME: If we upgrade to newer Symfony\Process and use the newer
+      // inheritEnv feature, then this becomes unnecessary.
+      throw new \CRM_Core_Exception('ExternalBatch cannot detect environment: $_ENV is missing. (Tip: Set variables_order=EGPCS in php.ini.)');
+    }
   }
 
   /**