2015-01-12 2 views
1

В настоящее время я работаю над программированием своего собственного интернет-магазина с помощью NetBeans IDE 8.0.2, используя PHP. Моя система - Windows 7 32bit, а мой localhost работает от WampServer 2.5. Я слежу за THC. Курсы: https://www.youtube.com/playlist?list=PLbXVpMmmrntAvOYgkqhHW0hVu8dWUNyfzПочему я получаю «Warning: require_once (config): не удалось открыть поток: нет такого файла или каталога» при попытке запустить этот код?

До сих пор все шло отлично, но я получил доступ к этому видео: S2 {Building Framework} Класс и метод (p6). Парень просит повторить текст образца на экране, чтобы проверить код, но я получаю эти два сообщения об ошибках при выполнении проекта на локальном хосте:

Warning: require_once(config): failed to open stream: No such file or directory in C:\wamp\www\ecommerce\inc\autoload.php on line 2
Fatal error: require_once(): Failed opening required 'config' (include_path='.;C:\php\pear') in C:\wamp\www\ecommerce\inc\autoload.php on line 2

autoload.php:

<?php 

    require_once('config'); 

    function __autoload($class_name) { 

     $class = explode("_", $class_name); 
     $path = implode("/", $class).".php"; 
     require_once($path); 

    } 

ядра .php:

<?php 

    class Core { 

     public function run() { 
      echo "Hello this is a print test"; 

     } 

    } 

index.php:

<?php 

    require_once'inc/autoload.php'; 
    $core = new Core(); 
    $core->run(); 

config.php:

<?php 

    if(!isset($_SESSION)) { 
     session_start(); 

    } 

    //site domain name with http 
    defined("SITE_URL") 
    ||define("SITE_URL", "http://".$_SERVER['SERVER_NAME']); 

    //directory seperator 
    defined("DS") 
    ||define("DS", DIRECTORY_SEPERATOR); 

    //root path 
    defined("ROOT_PATH") 
    ||define("ROOT_PATH", realpath(dirname(__FILE__) .DS.".." .DS)); 


    //classes folder 
    defined("CLASSES_DIR") 
    ||define("CLASSES_DIR", classes); 

    //pages folder 
    defined("PAGES_DIR") 
    ||define("PAGES_DIR", pages); 



    //modules folder 
    defined("MOD_DIR") 
    ||define("MOD_DIR", "mod"); 


    //inc folder 
    defined("INC_DIR") 
    ||define("INC_DIR", "inc"); 


    //templates folder 
    defined("TEMPLATE_DIR") 
    ||define("TEMPLATE_DIR", "template"); 

    //emails path 
    defined("EMAILS_PATH") 
    ||define("EMAILS_PATH", ROOTH_PATH.DS. "emails"); 

    //catalogue images path 
    defined("CATALOGUE_PATH") 
    ||define("CATALOGUE_PATH", ROOTH_PATH.DS. "media" .DS."catalogue"); 


    //add all above directories to the include path 
    set_include_path(implode(PATH_SEPERATOR, array(
    realpath(ROOTH_PATH.DS.CLASSES_DIR), 
    realpath(ROOTH_PATH.DS.PAGES_DIR), 
    realpath(ROOTH_PATH.DS.MOD_DIR), 
    realpath(ROOTH_PATH.DS.INC_DIR), 
    realpath(ROOTH_PATH.DS.TEMPLATE_DIR). 
    get_include_path() 

    ))); 
+0

У вас есть файл с именем 'config'? Или файл с именем 'config.php'? –

+0

Да У меня есть файл с именем config.php. Он находится в папке inc рядом с autoload.php – user23524697

+0

Часто возникает эта ошибка и для быстрого устранения неполадок выполните следующие действия: http://stackoverflow.com/a/36577021/2873507 –

ответ

8

Изменить это:

require_once('config'); 

к:

require_once('config.php'); 
        //^^^See here file extension 

(Также убедитесь, что он находится в той же директории с autoload.php, в противном случае измените путь)

EDIT:

Или попробуйте я с абсолютным путем, как это:

require_once(dirname(__FILE__) . "/config.php"); 

EDIT 2:

Поскольку теперь вы получите сообщение об ошибке из файла конфигурации, означает, что он получил включен, но до сих пор некоторые ошибки в нем!

Первое будет это:

//directory seperator 
defined("DS") 
||define("DS", DIRECTORY_SEPERATOR); 
      //^^^^^^^^^^^^^^^^^^^ Typo must be: DIRECTORY_SEPARATOR 

Следующих один здесь:

//classes folder 
defined("CLASSES_DIR") 
||define("CLASSES_DIR", classes); 
         //^^^^^^^ This isn't a constant so if it is a string put quotes around it 

Той же ошибка здесь:

//pages folder 
defined("PAGES_DIR") 
||define("PAGES_DIR", pages); 
        //^^^^^ 

Следующей ошибка здесь:

//emails path 
defined("EMAILS_PATH") 
||define("EMAILS_PATH", ROOTH_PATH . DS . "emails"); 
         //^^^^^^^^^^ Typo must be: ROOT_PATH , you have one h too much 

То же самое здесь:

//catalogue images path 
defined("CATALOGUE_PATH") 
||define("CATALOGUE_PATH", ROOTH_PATH.DS. "media" .DS."catalogue"); 
         //^^^^^^^^^^ 

И во всем Palce у вас есть 6 опечаток здесь:

//add all above directories to the include path 
set_include_path(implode(PATH_SEPERATOR, array(
         //^^^^^^^^^^^^^^ Typo must be: PATH_SEPARATOR 
realpath(ROOTH_PATH.DS.CLASSES_DIR), 
     //^^^^^^^^^^ Typo must be: ROOT_PATH , you have one h too much 
realpath(ROOTH_PATH.DS.PAGES_DIR), 
     //^^^^^^^^^^ 
realpath(ROOTH_PATH.DS.MOD_DIR), 
     //^^^^^^^^^^ 
realpath(ROOTH_PATH.DS.INC_DIR), 
     //^^^^^^^^^^ 
realpath(ROOTH_PATH.DS.TEMPLATE_DIR). 
     //^^^^^^^^^^ 
get_include_path() 

))); 

EDIT 3:

Здесь вы можете упростить эти 2 строки и я бы измените запрос, поэтому он работает, даже если вы включите сам файл в другой! Как это:

autoload.php:

function __autoload($class_name) { 

    $class = explode("_", $class_name); 
    $path = implode("/", $class).".php"; 
    require_once($path); 

} 

к этому:

function __autoload($class_name) { 

    $path = str_replace("_", "/", $class_name) . ".php"; 
    require_once(dirname(__FILE__) . "/" . $path); 

} 
+0

Теперь, когда я изменил ее, Я получаю 10 фатальных ошибок вместо 2 ...: S – user23524697

+1

@MebZone Является ли файл в том же каталоге и/или изменен вами paht? Какие ошибки вы получаете? – Rizier123

+0

Спасибо, что помогли мне! Я попытался с абсолютным путем и теми же сообщениями об ошибках. Первые 8 ошибок выглядят так. Примечание: использование неопределенного константы ROOTH_PATH - предполагаемый «ROOTH_PATH» в C: \ wamp \ www \ ecommerce \ inc \ config.php в строке 57 Но когда я изменяю его в NetBeans, конечно, NetBeans дает мне синтаксическую ошибку. – user23524697