php代码在同一个php解释器中使用两个不同的HTTP服务器有2个输出

时间:2016-05-28 08:45:17

标签: php apache xampp phpstorm

我正在编写一个代码,其中有2个文件index.php和register.php。

index.php包含html表单的代码,如下所示:

<form action="register.php" method="POST">
            <fieldset>
                <legend>Personal Information</legend>

                First Name: <input type="text" name="fname">
                <br>
                <br>
                Last Name: <input type="text" name="lname">
                <br>
                <br>
                <input type="submit" name="submit" value="Submit">
            </fieldset>
</form>

register.php包含以下代码:

    <?php

//if(isset($_POST['fname']))
{
    $f_name= $_POST['fname'];
}

//if(isset($_POST['lname']))
{
    $l_name = $_POST['lname'];
}

echo $f_name;
echo "<br><br>";
echo $l_name;

?>

我已经在PhpStorm中编写了代码,并且我的Windows 10安装系统中也安装了Xampp。 我已经设置了&#39; htdocs&#39; xampp目录为&#39; apache_http_server&#39;在&#39; D:\&#39;驱动我的系统,并在'apache_http_server&#39;的子目录中创建PhpStorm项目。这样我就可以使用Xampp和PhpStorm IDE运行我的php项目了。我还将Xampp提供的php innterpreter设置为PhpStorm的默认解释器,所以在这两种情况下我的代码都使用相同的解释器(PHP Version 7.0.4)。

现在的问题是,每当我使用Xampp运行此项目时,它运行时没有任何错误和通知。但如果我使用PhpStorm IDE使用其内置的httpserver在端口63342上运行相同的项目,它会给我以o / p的通知:

Notice: Undefined index: fname in D:\practice\apache_http_server\my_projects\login_form\register.php on line 5

Notice: Undefined index: lname in D:\practice\apache_http_server\my_projects\login_form\register.php on line 10

我还尝试使用 if(isset())来解决此问题,因为stackoverflow上的另一个答案会导致未定义的变量错误。

那为什么会这样呢?问题出在哪里?我错过了在任何配置文件中进行更改吗?如果是,那么变化需要或在哪里?

使用Xampp服务器和PhpStorm的o / p屏幕截图如下:

  1. 使用Xampp最终的O / p:
  2. enter image description here

    1. O / P,并通知PhpStorm的http服务器:
    2. enter image description here

3 个答案:

答案 0 :(得分:2)

你在两台服务器上有不同的PHP配置, 在两台服务器上运行phpinfo()并修复差异。

答案 1 :(得分:2)

尝试

echo $_SERVER['DOCUMENT_ROOT'];     //check if the root of the website is the same on both servers

if(!$_SERVER['REQUEST_METHOD']) {
    die("Something went REALLY wrong!!!")    //reinstall your server conf.
} 
if(!$_SERVER['REQUEST_METHOD'] !== 'POST') {
    die("We're not getting this request from POST. abort");
} 

if(!$_POST) {
    die("We're not receiving any data from post.");
} elseif(!$_POST['submit']) {
    die("PHP thinks the form wasn't actually submitted");
} else {
    if($_POST['fname']) {
        //work with your data
    } else {
        echo "<p>There\'s a problem. We're not getting fname from the form</p>";
    }
    ...
    ...
}

我对PHPStorm没有任何经验,但是PHPStorm内置服务器的 include_path 可能存在问题?更重要的是。你是否包含 include_path 的内容?

答案 2 :(得分:1)

似乎问题出在http服务器的配置中。如果您安装了Xampp,则可以将Xampp的apache服务器设置为默认的http服务器。您可以在以下链接中找到将Xampp与PhpStorm集成的分步指南(该链接来自PhpStorm的官方供应商):

https://confluence.jetbrains.com/display/PhpStorm/Installing+and+Configuring+XAMPP+with+PhpStorm+IDE