За последние 24 часа нас посетили 21890 программистов и 1076 роботов. Сейчас ищут 599 программистов ...

Не могу разобраться с Fatal error: require()

Тема в разделе "PHP для новичков", создана пользователем DevCode, 18 сен 2019.

  1. DevCode

    DevCode Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    16
    Симпатии:
    0
    Здравствуйте. Я не очень опытный в php. Так сказать подтягиваю знания. Пишу сейчас свой скрипт. Который мне выдает....

    Warning: require(Z:\home\devcode.cms\www\engine/engine/data/service.php) [function.require]: failed to open stream: No such file or directory in Z:\home\devcode.cms\www\engine\bootstrap.php on line 12

    Fatal error: require() [function.require]: Failed opening required 'Z:\home\devcode.cms\www\engine/engine/data/service.php' (include_path='.;C:\php\pear') in Z:\home\devcode.cms\www\engine\bootstrap.php on line 12

    Файл service.php
    Код (Text):
    1. <?php
    2.  
    3. return [
    4.     engine\service\database\provider :: class
    5. ];
    Файл bootstrap.php
    Код (Text):
    1. <?php
    2.  
    3. require_once __DIR__ . '/../vendor/autoload.php';
    4.  
    5. use engine\devcode;
    6. use engine\di\di;
    7.  
    8. try {
    9.  
    10.     $di = new di();
    11.  
    12.     $services = require __DIR__ . '/engine/data/service.php';
    13.  
    14.     // init services
    15.     foreach ($services as $service)
    16.     {
    17.         $provider = new $service($di);
    18.         $provider->init();
    19.     }
    20.  
    21.     $devcode = new devcode($di);
    22.     $devcode->run();
    23.  
    24.     }
    25.      catch (\ErrorException $e)
    26.      {
    27.  
    28.    echo $e->getMessage();
    29.  
    30.      }
    Помогите пожалуйста. Чтото не могу разобраться
     
    #1 DevCode, 18 сен 2019
    Последнее редактирование: 19 сен 2019
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    А что там два раза engine в пути, по которому php пытается считать файл - это нормально?
     
    DevCode и miketomlin нравится это.
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    ну видать и в английском не сильны? Он же четко пишет что нет такого файла по указанному пути
    и потом
    PHP:
    1. $services = require __DIR__ . '/engine/data/service.php';
    а это что за чудо? почитайте про
    PHP:
    1. require
    это включение php кода, это не функция, она ничего не возвращает!

    и этот кусок кода
    PHP:
    1. <?php
    2. return [
    3.     engine\service\database\provider :: class
    4. ];
    тоже бредовый, он ничего никому не вернет и не выведет
     
    #3 ADSoft, 19 сен 2019
    Последнее редактирование: 19 сен 2019
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Возвращает, если в файле есть return, тут вы не правы
    --- Добавлено ---
    https://www.php.net/manual/ru/function.include.php#example-127
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Возвращает, даже если нет return.
    --- Добавлено ---
    P.S. Тут дефолтом вроде 1 возвращается, если не было сбоя при подключении.

    P.P.S. По крайней мере «наши» любят писать «return 1;» при преждевременном «возврате из файла».
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    хм.. не знал, в стандартной доке не описана эта особенность ... так сказать факутальтивно...
    что-же: век живи - век учись ))))
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @ADSoft, ТС показал, как эта фигня обычно используется.
     
  8. DevCode

    DevCode Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    16
    Симпатии:
    0
    Точно) Спасибо большое. Просто дело было в 3 ночи по местному времени и к тому моменту я уже изрядно подустал) По ка что пишу дальше если возникнут какиенибудь проблемы обращусь сюда. Очень оперативный форум. )
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
    там через include можно получить
     
  10. DevCode

    DevCode Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    16
    Симпатии:
    0
    • В общемто повстречал я такую ошибку) прошу опять же помощи)
    • Fatal error: in W:\domains\devcode.ru\engine\clases\database\connection.php on line 29

    • 29 строка это

    • $this->link = new PDO($dsn, $config ['username'], $config ['password']);

    • пхп шторм говорит на нее
    • ext-pdo is missing in composer.json
    --- Добавлено ---
    Вот функция полностью

    Код (Text):
    1.   private function connect()
    2.     {
    3.        $config = [
    4.            'host' => 'localhost',
    5.            'db_name' => 'test_cms',
    6.            'username' => 'root',
    7.            'password' => 'password',
    8.            'charset' => 'utf8'
    9.        ];
    10.  
    11.        $dsn = 'mysql:host='.$config['host'].' ;dbname='.$config['db_name'].' ;charset='.$config['charset'];
    12.  
    13.        $this->link = new PDO($dsn, $config['username'], $config['password']);
    14.  
    15.         return $this;
    16.     }
     
  11. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    должно сработать:

    composer.json
    Код (Javascript):
    1. "require" : {
    2.         "ext-pdo": "*"
    3.     }
    --- Добавлено ---
    он тебе говорит что в файле composer.json нет ext-pdo
     
    DevCode нравится это.
  12. DevCode

    DevCode Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    16
    Симпатии:
    0
    Вот
    Забыл добавить что добавлял уже( ошибка сохранилась. Хотя по идее мне сейчас должна вернуться запись из базы