如何配置 Heroku 的 Facebook 教程应用程序以使用 PHP 在本地运行?

发布于 2024-12-10 07:36:40 字数 744 浏览 0 评论 0原文

我正在尝试运行 Heroku 的基本教程 facebook 应用程序 (http://devcenter.heroku.com/articles/脸书)。 按照说明进行操作,在 Heroku 上的部署进展顺利。 尝试本地部署时出现以下错误

解析错误:语法错误,C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\AppInfo.php 第 36 行出现意外的“:”。

我知道 getHome 函数存在一些问题,找到了答案与 python 类似的问题在这里 - 运行时出现问题Heroku 的 Facebook 应用程序教程与 Python,但我仍然无法弄清楚应该如何为 PHP 完成

我尝试将 getHome 函数更改为仅返回 http://127.0.0.1:5000。 / (就像我在 Facebook 应用程序上设置的站点 URL),但我发现浏览器无法连接到它。

我在本地运行 Safari 2.2,基本的 Hello world PHP 文件运行正常

I am trying to run the Heroku's basic tutorial facebook application (http://devcenter.heroku.com/articles/facebook).
Following the instructions, deploying on Heroku went fine.
Trying to deploy locally I got the following error

Parse error: syntax error, unexpected ':' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\AppInfo.php on line 36".

I understood there's some problem with the getHome function, found an answer to a similar problem with python here - Problem running Heroku's Facebook app tutorial with Python, but still I am unable to figure it out how it should be done for PHP.

I tried to changed the getHome function to just return http://127.0.0.1:5000/ (like the Site URL I set on my facebook app) but then I get that the browser cannot connect to it.

I have Safari 2.2 running locally, basic Hello world PHP file is running ok.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

信仰 2024-12-17 07:36:40

看了你的评论,你的做法是错误的。应该是

return ($_SERVER['HTTP_X_FORWARDED_PROTO']) ?: "http:" . "://" . $_SERVER['HTTP_HOST'] . "/";

Looking at your comment what you do there is wrong. It should be

return ($_SERVER['HTTP_X_FORWARDED_PROTO']) ?: "http:" . "://" . $_SERVER['HTTP_HOST'] . "/";
我很坚强 2024-12-17 07:36:40

该应用程序依赖 PHP 5.3 运算符在该行上执行“或等于”操作。它的工作原理如下:

$foo ?: "bar";

这意味着:如果设置了,则假设为 $foo 的值,否则为“bar”。为了使其与早期版本的 PHP 兼容,您必须使用不同的运算符和函数重写它。就像:

isset($foo) ? $foo : "bar";

回到应用程序,您可以使用以下方法修复它:

$protocol = isset($_SERVER['HTTP_X_FORWARDED_PROTO']) ? $_SERVER['HTTP_X_FORWARDED_PROTO'] : "http";
return $protocol . "://" . $_SERVER['HTTP_HOST'] . "/";

This post 提供了有关 PHP 或等价物和替代品的更多信息。

The app is relying on a PHP 5.3 operator to do an "or equals" on that line. It works like this:

$foo ?: "bar";

Which means: assume the value of $foo if set, otherwise "bar". To make that compatible with earlier versions of PHP you'd have to rewrite it using a different operator and functions. Like:

isset($foo) ? $foo : "bar";

So going back to the app, you can fix it with:

$protocol = isset($_SERVER['HTTP_X_FORWARDED_PROTO']) ? $_SERVER['HTTP_X_FORWARDED_PROTO'] : "http";
return $protocol . "://" . $_SERVER['HTTP_HOST'] . "/";

This post has more information on PHP's or equals and alternatives.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文