use*_*697 1 php localhost require-once
我目前正致力于NetBeans IDE 8.0.2使用自己的在线商店进行编程PHP.我的系统是Windows 7 32位,我的localhost由WampServer 2.5提供支持.我正在关注THC课程:https://www.youtube.com/playlist? list = PLbXVpMmmrntAvOYgkqhHW0hVu8dWUNyfz
到目前为止,一切都很顺利,但我在这个视频中获得了股票:S2 {Building Framework}类和方法(p6).那个人要求在屏幕上回显一个示例文本来测试代码,但是在localhost上运行项目时我得到这两个错误消息:
警告:require_once(config):无法打开流:第2行的C:\ wamp\www\ecommerce\inc\autoload.php中没有此类文件或目录
致命错误:require_once():无法打开所需的'config'(include_path在第2行的C:\ wamp\www\ecommerce\inc\autoload.php中='.;; C:\ php\pear')
autoload.php:
<?php
require_once('config');
function __autoload($class_name) {
$class = explode("_", $class_name);
$path = implode("/", $class).".php";
require_once($path);
}
Run Code Online (Sandbox Code Playgroud)
core.php中:
<?php
class Core {
public function run() {
echo "Hello this is a print test";
}
}
Run Code Online (Sandbox Code Playgroud)
index.php文件:
<?php
require_once'inc/autoload.php';
$core = new Core();
$core->run();
Run Code Online (Sandbox Code Playgroud)
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()
)));
Run Code Online (Sandbox Code Playgroud)
改变这个:
require_once('config');
Run Code Online (Sandbox Code Playgroud)
至:
require_once('config.php');
//^^^See here file extension
Run Code Online (Sandbox Code Playgroud)
(还要确保它与同一目录autoload.php,否则改变路径)
编辑:
或者尝试使用这样的绝对路径:
require_once(dirname(__FILE__) . "/config.php");
Run Code Online (Sandbox Code Playgroud)
编辑2:
由于您现在从配置文件中收到错误消息,意味着它已被包含,但仍然有一些错误!
首先是这样的:
//directory seperator
defined("DS")
||define("DS", DIRECTORY_SEPERATOR);
//^^^^^^^^^^^^^^^^^^^ Typo must be: DIRECTORY_SEPARATOR
Run Code Online (Sandbox Code Playgroud)
下一个在这里:
//classes folder
defined("CLASSES_DIR")
||define("CLASSES_DIR", classes);
//^^^^^^^ This isn't a constant so if it is a string put quotes around it
Run Code Online (Sandbox Code Playgroud)
同样的错误:
//pages folder
defined("PAGES_DIR")
||define("PAGES_DIR", pages);
//^^^^^
Run Code Online (Sandbox Code Playgroud)
下一个错误:
//emails path
defined("EMAILS_PATH")
||define("EMAILS_PATH", ROOTH_PATH . DS . "emails");
//^^^^^^^^^^ Typo must be: ROOT_PATH , you have one h too much
Run Code Online (Sandbox Code Playgroud)
同样在这里:
//catalogue images path
defined("CATALOGUE_PATH")
||define("CATALOGUE_PATH", ROOTH_PATH.DS. "media" .DS."catalogue");
//^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
在这里,你有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()
)));
Run Code Online (Sandbox Code Playgroud)
编辑3:
在这里你可以简化这两行,我会改变要求,所以即使你把文件本身包含在另一行中它也能正常工作!像这样:
autoload.php:
function __autoload($class_name) {
$class = explode("_", $class_name);
$path = implode("/", $class).".php";
require_once($path);
}
Run Code Online (Sandbox Code Playgroud)
对此:
function __autoload($class_name) {
$path = str_replace("_", "/", $class_name) . ".php";
require_once(dirname(__FILE__) . "/" . $path);
}
Run Code Online (Sandbox Code Playgroud)