php包含错误,找不到path
我有这个小代码,实际上是一个login脚本,用来检查寄存器是否打开,并在loginbutton后显示:
<?php include("../inc/db.php"); if(isset($_POST['user']) && isset($_POST['pass'])) { $password = $_POST['pass']; $username = $_POST['user']; $sql = "SELECT * FROM `users` WHERE `user` = '".$username."' AND `password` = '".$password."'"; $rez = $pdo->query($sql); if($rez->fetchColumn() > 0) { ... } else {echo '<p align="center">...</p>';} } else { echo '<p align="center">...</p>'; } } ?> <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form name="form1" method="post" action="login"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td colspan="3"><strong>Member Login </strong></td> </tr> <tr> <td width="78">Username</td> <td width="6">:</td> <td width="294"><input name="user" type="text" id="user"></td> </tr> <tr> <td>Password</td> <td>:</td> <td><input name="pass" type="password" id="pass"></td> </tr> <tr> <td> </td> <td> </td> <td><input type="submit" name="Submit" value="Login"></td> </tr> <?php $sql = "SELECT setare FROM setari WHERE nume_setare = 'OPEN_REG'"; $openreg = $pdo->query($sql)->fetch(); if($openreg['setare'] == 1) { ?> <tr> <td> </td> <td> </td> <td><a href="register">Inregistrare</a></td> </tr><?php } ?> </table> </td> </form> </tr> </table>
我的问题是这一行:
包括( “../ INC / db.php中”); 警告:包含(E:/wamp/www//inc/db.php):未能打开stream:在第3行E:\ wamp \ www \ proiect1-test \ scripts \ login.php中没有这样的文件或目录警告:include():在E:\ wamp \ www \ proiect1-test \ scripts \ login.php中打开用于包含(include_path ='.; C:\ php \ pear')的'../inc/db.php'失败在线3
我无法弄清楚我错在哪里。 path是正确的,如果我打loginbutton,它的作品。如果我打loginbutton用户名和密码inccorect组合,警告消失。 但是,这并不包括,当我第一次打开它。 该login文件包含在网站的索引中。
你的path显然是不正确的。 当您使用文件的相对path,然后开始将文件放在不同的目录中时,通常会发生这种情况。 您应该使用文件的完整系统path来避免此问题:
include("/path/from/root/to/inc/db.php");
一个常见的事情是定义一个variables或常量来定义网页文件的根path。 这样,如果它改变(即你改变主机),你只需要改变它在一个地方。
在你的configuration文件中:
define('ROOT_PATH', '/path/from/root/to/');
在你的PHP文件中;
include(ROOT_PATH . "inc/db.php");