【问题标题】:PHP wont connect to Apache/SQL serverPHP 不会连接到 Apache/SQL 服务器
【发布时间】:2018-03-04 20:42:42
【问题描述】:

我在运行我的 PHP 代码和运行我的本地 apache24 服务器时遇到问题。

在html中我做了一个form

<form method="post" action="./php/submit.php">
                 <div class="submitrow">
                    <div class="col-25">
                        <label for="fname">Altcoin name*</label>
                    </div>
                    <div class="col-75">
                        <input type="text" name="altcoinName" placeholder="Ethereum" maxlength="20" required>
                    </div>
                 </div>

                <div class="submitrow">
                    <div class="col-25">
                        <label for="fname">Altcoin symbol*</label>
                    </div>
                    <div class="col-75">
                        <input type="text"  name="altcoinSymbol" placeholder="ETH" maxlength="5" required>
                    </div>
                </div> 
 </form>

当我提交form 时,我想运行这个PHP 脚本,它将数据从form 发送到我的本地SQL 服务器,我使用apache24 和phpmyadmin 运行。当我在 html 中“提交”我的form 时,PHP 代码没有被执行,它只会出现在我的浏览器中。

<?php
        $altcoinName = filter_input(INPUT_POST, 'altcoinName');
        $altcoinSymbol = filter_input(INPUT_POST, 'altcoinSymbol');
        if (!empty($altcoinName)){
        if (!empty($altcoinSymbol)){
            $host = "localhost/phpmyadmin";
            $dbusername = "root";
            $dbpassword = "";
            $dbname = "servertest";

            //create connection
            $conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);

            if (mysqli_connect_error()){
                die('Connect Error ('. mysqli_connect_errno() .') '
                . mysqli_connect_error());     
            } else {
                $sql = "INSERT INTO submit (altcoinName, altcoinSymbol)
                values ('$altcoinName','$altcoinSymbol')";
                if ($conn->query($sql)){
                    echo "New record is inserted succesfully";
                } else {
                    echo "Error: ". $sql ."<br>". $conn->error;
                }
                $conn->close();
            }

        } else {
            echo "altcoin symbol should not be empty";
            die();
        }

        } else {
            echo "altcoin name should not be empty";
            die();
        }
?>

在 CMD 中,我进入 apache 文件夹并启动了 httpd(httpd -k start)。 这个错误是我得到的:

(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted.  : AH00072: make_sock: could not bind to address [::]:80
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted.  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

所以我搜索了0.0.0.0:80netstat -a -o 做了什么端口 它是LISTENING

有没有人知道我可能做错了什么或如何解决这个问题? 我真的很感激,

谢谢

【问题讨论】:

    标签: php html apache form-submit


    【解决方案1】:

    您应该授予目录中的执行访问权限,通常已在/var/www/html/ 中设置。但是,如果您使用的是主目录中的站点,例如 /home/username/public_site/,那么您还需要允许在该目录中执行脚本。

    【讨论】:

      【解决方案2】:

      如果您的 apache 正在运行,但 PHP 没有运行,则 PHP 可能未配置为从 apache 运行。

      在这里有条不紊地完成每个步骤:

      http://php.net/manual/en/install.unix.apache2.php

      如果它是预构建的 Apache/PHP 二进制文件,请从第 6 步开始,以确保配置了 PHP 端。如果有疑问,请重建二进制文件:)

      此外,在排除此类问题时,您可能会遇到表单问题,以及 Apache/PHP 配置问题。要验证至少 Apache 是否正确配置了 PHP,请将 php_info() 测试页面放在您的 Web 根目录中。

      如果这样有效,而表单提交无效,您可能会遇到两个单独的问题。

      http://php.net/manual/en/function.phpinfo.php

      我的直觉是,您只需要确保步骤 7 已完成,但我之前错了。并且不要忘记,在测试更改之前,每次对任何 Apache 或 PHP 文件进行更改时都要重新启动 httpd / apache24。

      【讨论】: