php - 使用 xampp 的 PHP 应用程序的权限被拒绝

标签 php mysql apache permissions xampp

我正在尝试制作我的第一个基于 php 的网站,但遇到了问题。该网站非常基础,旨在允许用户将学生信息输入数据库。我按照 Derek Banas 的教程建立了这个网站,可以在此处找到该教程:

https://www.youtube.com/watch?v=mpQts3ezPVg&t=25s .

每当我尝试在浏览器中打开 getStudentInfo.php 文件时,我都会收到以下错误:

Warning: require_once(C:\xampp\htdocs\practiceWebDev): failed to open stream: Permission denied in C:\xampp\htdocs\practiceWebDev\practicePHPmySQL\getStudentInfo.php on line 3

Fatal error: require_once(): Failed opening required '../../practiceWebDev' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\practiceWebDev\practicePHPmySQL\getStudentInfo.php on line 3

此错误是否意味着我的代码有问题?或者我是否需要更改与 XAMPP 关联的 php.ini 或 httpd.conf 文件?下面是我处理连接的文件(如果它们有用的话)。非常感谢大家提供的任何反馈。另外,我使用 mysql 作为我的数据库。

mysqli_connect.php:

<?php
//IMPORTANT! This file must be saved outside of where the rest of my files related to our website are saved so that no one may access them.

DEFINE ('DB_USER' 'studentweb');
DEFINE ('DB_PASSWORD' 'turtledove');
DEFINE ('DB_HOST' 'localhost');
DEFINE ('DB_NAME' 'studentdatabase');

$databaseConnection = @mysqli_connect(DB_USER, DB_PASSWORD, DB_HOST, DB_NAME)
//using the above @ symbol before mysqli_connect makes it so errors will not appear in the browser.
//@ is known as the 'error control operator', and makes PHP suppress error messages associated with the expression.
OR die('Could not connect to MySql lol' . mysqli_connect_error());
//mysqli_connect_error() is a function defined in the php synthax.
?>

getStudentInfo.php:

<?php
//now we require the file outside of the current directory called mysqli_connect.php
require_once('../../practiceWebDev');

//the query below will display the information from each student in the form of a table.
$query = "SELECT first_name, last_name, email, street, province,
          postal_code, phone_num, birth_date, sex, date_entered,
          lunch_cost, student_id, FROM students";

//the response below is all the info that we've gotten that we want to show in our table.
$response = @mysqli_query($databseConnection, $query);

//below we will see if the query executed properly.
if($response)
{
    echo '<table align="left"   cellspacing="5" cellpadding="8">
        <tr><td align="left"><b>First Name</b></td>
        <td align="left"><b>Last Name</b></td>
        <td align="left"><b>Email</b></td>
        <td align="left"><b>Street</b></td>
        <td align="left"><b>City</b></td>
        <td align="left"><b>State</b></td>
        <td align="left"><b>Zip</b></td>
        <td align="left"><b>Phone</b></td>
        <td align="left"><b>Birth Day</b></td></tr>';
    while($row = mysqli_fetch_array($response)){
        echo '<tr>';
        echo '<td align=left">'.$row['first_name'].'</td><td align="left">'.$row['last_name'].'</td><td align="left">'.$row['email'].'</td>';
        echo '<td align="left">'.$row['street'].'</td><td align="left">'.$row['city'].'</td><td align="left">'.$row['state'].'</td>';
        echo '<td align="left">'.$row['zip'].'</td><td align="left">'.$row['phone'].'</td><td align="left">'.$row['birth_date'].'</td>';
        echo '</tr>';
    }
    echo '</table>';

}
else
{
    echo "Couldn't issue database query";
    echo mysqli_error($databseConnection);
}

mysqli_close($databseConnection);
?>

studentadded.php

<html>
<head>
<title>Add Student</title>
</head>
<body>
<!--First, we need to check if this page was actually reached when the form was submitted--->
<?php
//Below we check that a POST operation was completed by the button I have named "submitButton"
if(isset($_POST['submitButton']))
{
    $data_missing = array();
    /*If there is an empty field when a POST operation is completed, that field's name will be
      added to the data_missing array so that we may visually see which fields are not being sent*/
    if(empty($_POST['first_name']))
    {
        $data_missing[] = 'First Name';
    }
    else
    {
        $f_name = trim($POST['first_name']);
    }
    
    if(empty($_POST['lastName']))
    {
        $data_missing[] = 'Last Name';
    }
    else
    {
        $l_name = trim($POST['lastName']);
    }
    
    if(empty($_POST['email']))
    {
        $data_missing[] = 'email';
    }
    else
    {
        $email = trim($POST['email']);
    }
    
    if(empty($_POST['street']))
    {
        $data_missing[] = 'street';
    }
    else
    {
        $street = trim($POST['street']);
    }
    
    if(empty($_POST['province']))
    {
        $data_missing[] = 'province';
    }
    else
    {
        $province = trim($POST['province']);
    }
    
    if(empty($_POST['postal_code']))
    {
        $data_missing[] = 'postal_code';
    }
    else
    {
        $postal_code = trim($POST['postal_code']);
    }
    
    if(empty($_POST['phone_num']))
    {
        $data_missing[] = 'phone_num';
    }
    else
    {
        $phone_num = trim($POST['phone_num']);
    }
    
    if(empty($_POST['birth_date']))
    {
        $data_missing[] = 'birth_date';
    }
    else
    {
        $birth_date = trim($POST['birth_date']);
    }
    
    if(empty($_POST['sex']))
    {
        $sex[] = 'sex';
    }
    else
    {
        $sex = trim($POST['sex']);
    }
    
    if(empty($_POST['lunch_cost']))
    {
        $data_missing[] = 'lunch_cost';
    }
    else
    {
        $lunch_cost = trim($POST['lunch_cost']);
    }
    
    if(empty($_POST['student_id']))
    {
        $data_missing[] = 'student_id';
    }
    else
    {
        $student_id = trim($POST['student_id']);
    }
    
    //Now lets check
    if(empty($data_missing))
    {
        require_once('../mysqli_connect.php');
        
        $myQuery = "INSERT INTO students (first_name, last_name, email, street, province,
                  postal_code, phone_num, birth_date, sex, date_entered, lunch_cost, 
                  student_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?, NULL)";
                  
                  $statement = mysqli_prepare($databaseConnection, $myQuery);
                  //We have to represent the data type for each of the value that will be passed into our database.
                  /*i Integers
                  d Doubles
                  b Blobs
                  s Everything Else*/
                  
                  //Now lets bind variables to the '?'s passed in with the myQuery query.
                  mysqli_stmt_bind_param($statement, "sssssssisssd", $f_name, $l_name, $email, $street, $province,
                  $postal_code, $phone_num, $birth_date, $sex, $lunch_cost, $student_id);
                  
                  mysqli_statement_execute($statement);
                  
                  $affected_rows = mysqli_stmt_addected_rows($statement);
                  if($affected_rows == 1)
                  {
                      echo 'Went through properly! Student entered correctly!';
                      
                      mysqli_stmt_close($statement);
                      mysqli_close($databaseConnection);
                  }
                  else
                  {
                      echo 'Error occurred :(';
                      echo '<br />';
                      echo mysqli_error();
                      
                      mysqli_stmt_close($statement);
                      mysqli_close($databaseConnection);
                      
                  }
    }
    else
    {
        echo 'You need to enter the following data my dude: <br />';
        foreach($data_missing as $missingData)
        {
            echo "$missingData<br />";
        }
        
    }
                  
}

?>

    <form action="http://localhost/studentadded.php" method="post">
        <b>Add a New Student</b>

        <p>First Name: <input type="text" name="first_name" size="30" value="" /></p>
        <p>Last Name: <input type="text" name="lastName" size="30" value="" /></p>
        <p>Email: <input type="text" name="email" size="60" value="" /></p>
        <p>Street: <input type="text" name="street" size="50" value="" /></p>
        <p>Province: <input type="text" name="province" size="3" value="" /></p>
        <p>Postal Code: <input type="text" name="postal_code" size="6" value="" /></p>
        <p>Phone Number: <input type="text" name="phone_num" size="20" value="" /></p>
        <p>Birth Date (YYYY-MM-DD): <input type="text" name="birth_date" size="20" value="" /></p>
        <p>Sex: <input type="text" name="sexField1" size="5" maxlength="1" value="" />
        <!---<p>Sex: <input type="radio" name="sexField" value="M" />
                <br>
                <input type="radio" name="sexField" value="F" checked /></p>--->
        <!--<p>Date Entered: <input type="" name="" size="" value="" /></p>--->
        <p>Lunch Cost: <input type="text" name="lunch_cost" size="5" value="" /></p>
        <p>Student ID: <input type="text" name="student_id" size="10" value="" /></p>

        <input type="submit" name="submitButton" value="submitValue">
        <!-- type="submit" is a predefined term in html--->
    </form>
</body>
</html>

addStudent.php

<html>
    <head>
    <title>Add Student</title>
    </head>

    <body>
        <form action="http://localhost/studentadded.php" method="post">
            <b>Add a New Student</b>

            <p>First Name: <input type="text" name="first_name" size="30" value="" /></p>
            <p>Last Name: <input type="text" name="lastName" size="30" value="" /></p>
            <p>Email: <input type="text" name="email" size="60" value="" /></p>
            <p>Street: <input type="text" name="street" size="50" value="" /></p>
            <p>Province: <input type="text" name="province" size="3" value="" /></p>
            <p>Postal Code: <input type="text" name="postal_code" size="6" value="" /></p>
            <p>Phone Number: <input type="text" name="phone_num" size="20" value="" /></p>
            <p>Birth Date (YYYY-MM-DD): <input type="text" name="birth_date" size="20" value="" /></p>
            <p>Sex: <input type="text" name="sexField1" size="5" maxlength="1" value="" />
            <!---<p>Sex: <input type="radio" name="sexField" value="M" />
                    <br>
                    <input type="radio" name="sexField" value="F" checked /></p>--->
            <!--<p>Date Entered: <input type="" name="" size="" value="" /></p>--->
            <p>Lunch Cost: <input type="text" name="lunch_cost" size="5" value="" /></p>
            <p>Student ID: <input type="text" name="student_id" size="10" value="" /></p>
            
            <input type="submit" name="submitButton" value="submitValue">
            <!-- type="submit" is a predefined term in html--->
        </form>
    </body>
</html>

最佳答案

从我在这个地址的教程文件中可以看到:

http://www.newthinktank.com/2014/09/php-mysql-tutorial/

在文件getstudentinfo.php的文件开头

你应该有require_once('../mysqli_connect.php');

但是你有 require_once('../../practiceWebDev');
(这行代码中没有文件名!)

所以我认为只需更改这行代码并使用正确的路径+文件名应该可以解决您的错误

更新:

再次从我在您的代码中看到的内容来看,在 studentadded.php 文件中您有以下代码行:

require_once('../mysqli_connect.php');

因此,如果您的 studentadded.php 文件工作正常且没有错误,则只需使用此行更改 getstudentinfo.php 文件中生成错误的行即可。

关于php - 使用 xampp 的 PHP 应用程序的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310556/

相关文章:

mysql - 错误代码 : 1137 Can't reopen table: 'amountforagents'

apache - 重写条件以从智能手机检查移动用户代理

apache - 如何为 httpd 服务器的 www 和非 www 域编写 SSL 虚拟主机?

PHP, MySQL 查询

php - Laravel 中的项目从 5.8 更新到 6 时出现问题

javascript - 选择框 onchange 时更新 mysql 表中的值

mysql - mysql 中的求和无法正常工作并返回 0

spring - Tomcat 9 Connector如何监听127.0.0.1反向代理到Win。具有私有(private) ServerName 的 Apache 2.4

javascript - 从表中查询值

php - 将可嵌入字段设置为父实体映射的主键 - Doctrine2