注意:未定义的索引:第4行的C:\ Users \ me \ project \ index.php中的HTTP_X_FORWARDED_PROTO

时间:2012-01-12 04:18:03

标签: php heroku xampp

在Facebook上运行应用程序,在Heroku上设置,使用git下载代码,使用xampp for apache web server。不得不设置xampp来监听不同的端口,因为:80被占用,所以将httpd.conf更改为Listen 8080并添加了虚拟主机,因此我可以按照Heroku facebook应用程序的要求设置facebook环境变量。为了让apache无错运行,发现网站声称我还必须在httpd-ssl.conf中更改SSL的端口。我根据另一个网站的推荐将其更改为4430。 Apache / xampp现在启动正常,但是当我转到它时会收到来自Facebook Heroku代码的错误消息(相同的错误,无论是通过apps.facebook.com/myapp还是直接在localhost:8080)错误如下:

Notice: Undefined index: HTTP_X_FORWARDED_PROTO in C:\Users\me\project\index.php on line 4

Notice: Undefined index: HTTP_X_FORWARDED_PROTO in C:\Users\me\project\AppInfo.php on line 36

Notice: Undefined index: HTTP_X_FORWARDED_PROTO in C:\Users\me\project\AppInfo.php on line 36

Notice: Undefined index: access_token in C:\Users\me\project\FBUtils.php on line 108

问题开始的第一个文件的第一行:

<?php

// Enforce https on production
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == "http" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1' && $_SE    RVER['REMOTE_ADDR'] != 'localhost') {

  header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);

  exit();

}

请注意,此代码由Heroku / GitHub在其平台上设置Facebook App时提供。除了我列出的内容之外,似乎还有很多错误。

1 个答案:

答案 0 :(得分:4)

此错误表示$ _SERVER数组中不存在键HTTP_X_FORWARDED_PROTO。 如果要转义此类错误,则必须检查数组示例中是否存在此类键:

if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == "http" && ...)

或使用getenv这样的方法:

if (getenv('HTTP_X_FORWARDED_PROTO') == "http" && getenv('REMOTE_ADDR') != '127.0.0.1' && getenv('REMOTE_ADDR') != 'localhost')