ini для конкретного модуля zend с phpSettings.display_errors

Пытался переопределить phpSettings.display_errors из моего приложения / modules / module5 / config / module.ini.

В моем модуле 5 / Bootstrap.php есть

protected function _initModuleConfig()
{
    $iniOptions = new Zend_Config_Ini(dirname(__FILE__) . '/configs/module.ini');
    $this->getApplication()->setOptions($iniOptions->toArray());
}

поэтому файл анализируется правильно, но параметры phpSettings, указанные в application.ini, загружаются, а параметры, указанные в module.ini, игнорируются.

В моем приложении / Bootstrap я могу правильно получить $ this-> getAPplication (). настройки php вступят в силу. пока я использую application / modules / module5 / Bootstrap.php, я теряю объект приложения, getApplication () возвращает Bootstrap, пока ничего не делает, настройки php не активируются.


person thevikas    schedule 11.05.2011    source источник


Ответы (3)


Глядя на файловую систему, не должен ли ваш module.ini файл находиться в папку config в вашем модуле и вместо этого называться application.ini?

person Jake N    schedule 11.05.2011

Я не очень разбираюсь в приложении, но, на мой взгляд, нет ничего плохого в том, что оно является объектом Bootstrap. Глядя на мой дамп, кажется, что Zend_Application действительно связан с ним. Также, похоже, есть детали, которые вы ищете:

object(Bootstrap)[3]
  protected '_appNamespace' => string '' (length=0)
  protected '_resourceLoader' => 
    object(Zend_Application_Module_Autoloader)[7]
  protected '_application' => 
    object(Zend_Application)[1]
  protected '_classResources' => 
  protected '_container' => 
    object(Zend_Registry)[15]
  protected '_environment' => null
  protected '_optionKeys' => 
    array
  protected '_options' => 
    array
      'phpSettings' => 
        array
          'display_startup_errors' => string '1' (length=1)
          'display_errors' => string '1' (length=1)
          'date' => 
            array
              ...
      'bootstrap' => 
        array
          'path' => string 'C:\sites\mysite\application/Bootstrap.php' (length=39)
          'class' => string 'Bootstrap' (length=9)
      'resources' => 
        array
          'frontController' => 
            array
              ...
          'modules' => 
            array
              ...
          'layout' => 
            array
              ...
          'view' => 
            array
              ...
          'session' => 
            array
              ...
          'log' => 
            array
              ...
          'doctrine' => 
            array
              ...
      'appnamespace' => string '' (length=0)
      'autoloadernamespaces' => 
  protected '_pluginLoader' => 
    object(Zend_Loader_PluginLoader)[35]

Я вообще-то не понимаю, почему у вас проблема, вам придется дать нам несколько дампов.

Работает, когда я пробую:

<?php

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initApp()
    {
        $app = $this->getApplication();
        echo '1:';
            // die(var_dump($app->getOptions()));
        var_dump($app->getOption('phpSettings'));
        $app->setOptions(array('phpSettings'=>array('date'=>array('timezone'=>'America/New York'))));
        echo '2:';
        var_dump($app->getOption('phpSettings'));
    }
}

Это в моем макете:

<?php
echo 'in layout';
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
var_dump($bootstrap->getOptions());
?>

Это мой результат:

1:

array
  'display_startup_errors' => string '1' (length=1)
  'display_errors' => string '1' (length=1)
  'date' => 
    array
      'timezone' => string 'Africa/Johannesburg' (length=19)

2:

array
  'display_startup_errors' => string '1' (length=1)
  'display_errors' => string '1' (length=1)
  'date' => 
    array
      'timezone' => string 'America/New York' (length=16)

in layout

array
  'phpSettings' => 
    array
      'display_startup_errors' => string '1' (length=1)
      'display_errors' => string '1' (length=1)
      'date' => 
        array
          'timezone' => string 'America/New York' (length=16)

У меня отлично работает.

person Tjorriemorrie    schedule 11.05.2011
comment
В моем приложении / Bootstrap я могу правильно получить $ this- ›getAPplication (). настройки php вступят в силу. пока я использую application / modules / module5 / Bootstrap.php, я теряю объект приложения, getApplication () возвращает Bootstrap, пока ничего не делает, настройки php не активируются. - person thevikas; 12.05.2011

Предполагая, что вас действительно волнует включение / выключение настройки php display_error, вы можете просто захотеть сделать это:

$iniOptions = new Zend_Config_Ini(dirname(__FILE__) . '/configs/module.ini');
$iniOptions = $iniOptions->toArray();
ini_set ('display_errors',$iniOptions['display_errors']));

Поэтому, если это не сработает для вас, удалите все строки из вашего параметра display_errors из указанного дополнительного ini-файла и добавьте следующие строки после кода, упомянутого выше, и опубликуйте результат здесь.

var_dump($iniOptions);
echo'<hr>';
var_dump(ini_get('display_errors'));
die();
person Andresch Serj    schedule 18.07.2011