Как зафиксировать "подведенный, чтобы открыть поток: Никакой такой файл или каталог на пехлеви 2 дюйма?

Я пробую маленькие тесты на структуре зенда к se, как это работает.. Я создал обзор модуля. Теперь, в этом диспетчере, я хочу включать файл это сочтено одним справочником выше и когда я выполняю это, я добираюсь

( ! ) Warning: require(../database.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\zend\module\Survey\src\Survey\Controller\SurveyController.php on line 4
Call Stack
#   Time    Memory  Function    Location
1   0.0010  367280  {main}( )   ..\index.php:0
2   0.2738  5658600 Zend\Mvc\Application->run( )    ..\index.php:15
3   0.2780  5685104 Zend\EventManager\EventManager->trigger( )  ..\Application.php:297
4   0.2781  5685112 Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:208
5   0.2784  5686672 call_user_func ( )  ..\EventManager.php:464
6   0.2784  5686688 Zend\Mvc\DispatchListener->onDispatch( )    ..\EventManager.php:464
7   0.2785  5686688 Zend\Mvc\Controller\ControllerManager->get( )   ..\DispatchListener.php:90
8   0.2785  5686840 Zend\ServiceManager\AbstractPluginManager->get( )   ..\ControllerManager.php:114
9   0.2786  5686840 Zend\ServiceManager\ServiceManager->get( )  ..\AbstractPluginManager.php:110
10  0.2787  5687256 Zend\ServiceManager\ServiceManager->create( )   ..\ServiceManager.php:437
11  0.2787  5687288 Zend\ServiceManager\AbstractPluginManager->createFromInvokable( )   ..\ServiceManager.php:491
12  0.2788  5687704 Zend\Loader\StandardAutoloader->autoload( ) ..\ServiceManager.php:0
13  0.2788  5687760 Zend\Loader\StandardAutoloader->loadClass( )    ..\StandardAutoloader.php:217
14  0.2850  5694072 include( 'C:\wamp\www\zend\module\Survey\src\Survey\Controller\SurveyController.php' )  ..\StandardAutoloader.php:306

( ! ) Fatal error: require() [function.require]: Failed opening required '../database.php' (include_path='.;C:\php\pear') in C:\wamp\www\zend\module\Survey\src\Survey\Controller\SurveyController.php on line 4
Call Stack
#   Time    Memory  Function    Location
1   0.0010  367280  {main}( )   ..\index.php:0
2   0.2738  5658600 Zend\Mvc\Application->run( )    ..\index.php:15
3   0.2780  5685104 Zend\EventManager\EventManager->trigger( )  ..\Application.php:297
4   0.2781  5685112 Zend\EventManager\EventManager->triggerListeners( ) ..\EventManager.php:208
5   0.2784  5686672 call_user_func ( )  ..\EventManager.php:464
6   0.2784  5686688 Zend\Mvc\DispatchListener->onDispatch( )    ..\EventManager.php:464
7   0.2785  5686688 Zend\Mvc\Controller\ControllerManager->get( )   ..\DispatchListener.php:90
8   0.2785  5686840 Zend\ServiceManager\AbstractPluginManager->get( )   ..\ControllerManager.php:114
9   0.2786  5686840 Zend\ServiceManager\ServiceManager->get( )  ..\AbstractPluginManager.php:110
10  0.2787  5687256 Zend\ServiceManager\ServiceManager->create( )   ..\ServiceManager.php:437
11  0.2787  5687288 Zend\ServiceManager\AbstractPluginManager->createFromInvokable( )   ..\ServiceManager.php:491
12  0.2788  5687704 Zend\Loader\StandardAutoloader->autoload( ) ..\ServiceManager.php:0
13  0.2788  5687760 Zend\Loader\StandardAutoloader->loadClass( )    ..\StandardAutoloader.php:217
14  0.2850  5694072 include( 'C:\wamp\www\zend\module\Survey\src\Survey\Controller\SurveyController.php' )  ..\StandardAutoloader.php:306

вот файл диспетчера

<?php

namespace Survey\Controller;
(require 'test.php');

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Config\Config;

class SurveyController extends AbstractActionController
{
    public function indexAction()
    {
         $plugin = $this->plugin('url');

    }

    public function addAction()
    {
    }

    public function editAction()
    {
    }

    public function deleteAction()
    {
    }
}

Тот же самый код в диспетчере, когда я поместил database.php в тот же самый справочник как диспетчер, хорошо работает. Почему это не позволяет мне включать то, которое является одним справочником выше и как зафиксировать это?

0
nl ja de

1 ответы

Пожалуйста, смотрите на index.php из ZendSkeletonApplication. Заметьте директивную команду изменения, которая является chdir() .

Это наборы команд рабочий справочник Сценариев PHP к КОРНЮ вашего заявления. Таким образом каждый раз, когда вы хотите включать файл в свои сценарии, необходимо связать их относительно. В вашем случае это решило бы проблему:

include __DIR__ . '/../database.php';

However: going just by the filename i'd say you're doing something that is not really intended. There should be no need for yet another filesystem interaction just to get some database parameters. These kind of information should be put into ./config/autoload/database.local.php

Вы будете в состоянии получить доступ к params использование синтаксиса множества от диспетчера этим способом:

$config   = $this->getServiceLocator()->get('config');
$dbParams = $config['dbParams']; //or whatever you name it, default PHP Arrays
1
добавлено