【问题标题】:php include error not findind the pathphp包含错误找不到路径
【发布时间】:2016-06-26 23:35:37
【问题描述】:

我有这个小代码,实际上是一个登录脚本,它检查注册是否打开,并在登录按钮后显示:

   <?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>&nbsp;</td>
    <td>&nbsp;</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>&nbsp;</td>
    <td>&nbsp;</td>
    <td><a href="register">Inregistrare</a></td>
    </tr><?php } ?>
    </table>
    </td>
    </form>
    </tr>
    </table>

我的问题是这一行:

include("../inc/db.php"); 警告:包含(E:/wamp/www//inc/db.php):无法打开流:第 3 行的 E:\wamp\www\proiect1-test\scripts\login.php 中没有这样的文件或目录 警告:include():在 E:\wamp\www\proiect1-test\scripts\login 中打开 '../inc/db.php' 以包含 (include_path='.;C:\php\pear') 失败。 php 在第 3 行

我不知道我错在哪里。路径是正确的,如果我点击登录按钮,它就可以工作。如果我点击登录按钮的用户名和密码组合不正确,警告就会消失。但是,它不包括当我第一次打开它时。此登录文件包含在网站的索引中。

【问题讨论】:

  • 如果它告诉您找不到文件,那么路径是不正确的。您应该信任那台计算机上的计算机。
  • 如果路径正确,PHP 不会抱怨。在你的前端控制器中定义一个固定的路径常量并在以后引用它。
  • 事实上我不明白它说它是错误的,但是使用登录按钮,我使用该文件中的信息
  • 经常会遇到此错误,要快速排除故障,请按照以下步骤操作:stackoverflow.com/a/36577021/2873507

标签: php mysql


【解决方案1】:

您指向该文件的路径显然不正确。当您使用文件的相对路径然后开始将文件放在不同的目录中时,通常会发生这种情况。您应该使用文件的完整系统路径来避免此问题:

include("/path/from/root/to/inc/db.php"); 

通常要做的事情是定义一个变量或常量来定义 Web 文件的根路径。这样,如果它发生变化(即您更改主机),您只需在一个地方进行更改。

在你的配置文件中:

define('ROOT_PATH', '/path/from/root/to/');

在您的 PHP 文件中;

include(ROOT_PATH . "inc/db.php"); 

【讨论】:

  • 如果它是一个错误的路径,那么脚本将根本无法工作。首次使用时不起作用,点击登录按钮后,它可以正常使用。
  • 对绝对路径进行编码也是非常糟糕的做法,因为它使代码极难移植到其他系统。
  • @user3054345 因为您使用include() 而不是require(),所以您的脚本不会失败。
  • hmm,我想我知道问题出在哪里了.. register.php 和 index.php 不在同一个文件夹中,所以如果我使用缩写形式,路径会不同
  • 这就是我在回答一开始时所说的
猜你喜欢
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2011-02-15
  • 2018-09-08
相关资源
最近更新 更多