在Heroku上建立的Facebook应用程序上工作,使用git下载代码,并使用xampp作为apache网络服务器。必须将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
Run Code Online (Sandbox Code Playgroud)
问题开始的第一个文件的第一行:
<?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();
}
Run Code Online (Sandbox Code Playgroud)
请注意,此代码由Heroku / GitHub在其平台上设置Facebook App时提供。除了我列出的错误之外,似乎还有很多错误。
此错误表明键HTTP_X_FORWARDED_PROTO在$ _SERVER数组中不存在。如果要避免此类错误,则必须检查数组示例中是否存在此类键:
if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == "http" && ...)
Run Code Online (Sandbox Code Playgroud)
或使用如下getenv方法:
if (getenv('HTTP_X_FORWARDED_PROTO') == "http" && getenv('REMOTE_ADDR') != '127.0.0.1' && getenv('REMOTE_ADDR') != 'localhost')
Run Code Online (Sandbox Code Playgroud)