在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时提供。除了我列出的内容之外,似乎还有很多错误。
答案 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')