2012-01-12 30 views
1

在Heroku上設置的Facebook應用上使用git下載他們的代碼,使用Apache Web服務器的xampp。必須將xampp設置爲在不同的端口上進行監聽,因爲:80被採用,因此將httpd.conf更改爲Listen 8080並添加了虛擬主機,以便根據Heroku Facebook應用程序的要求設置facebook環境變量。爲了讓Apache運行沒有錯誤,發現網站聲明我也必須在httpd-ssl.conf中更改SSL的端口。根據另一個網站的建議,我將其更改爲4430。 Apache/xampp現在啓動正常,但是當我進入它時(通過apps.facebook.com/myapp或直接在localhost:8080發生同樣的錯誤),我會收到來自Facebook Heroku代碼的錯誤消息:注意:未定義的索引:第4行的C: Users me project index.php中的HTTP_X_FORWARDED_PROTO

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應用程序時提供。除了我列出的那些之外,似乎還有不少錯誤。

+0

(引用來自另一個線程的答案),它看起來就像你沒有安裝cURL功能一樣。運行一個php_info()文件並檢查是否有任何提及的cURL函數。鏈接:http://stackoverflow.com/questions/8874425/500-error-developing-heroku-php-facebook-app-locally – 2012-01-26 07:08:55

回答

3

此錯誤表示密鑰HTTP_X_FORWARDED_PROTO不存在於$ _SERVER數組中。 如果你想逃避這樣的錯誤,你必須檢查,如果這樣的鍵排列例如存在:

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') 
+0

好主意,但如果你看我的代碼提供你可以看到,所有指標都在單一或雙引號,包括HTTP_X_FORWARDED_PROTO。 – 2012-01-12 04:59:12

+0

謝謝。 isset是一個好主意,但Heroku/GitHub的這個程序似乎有太多的錯誤。我想我會爲Facebook應用使用不同的代碼庫。謝謝! – 2012-01-12 05:26:07

+0

如果有人使用這個代碼,這裏是原始代碼:https://github.com/heroku/facebook-template-php(2012年1月11日拉)這裏有一些幫助:http://mantisforge.org/dev/gitstats /commit-detail.php?commit=e918599783875090a446c3fe8aeebec8d0f1f817 然後對所有未定義的索引執行此操作,然後仍然以「無效憑證」結束!所以我推薦的是看其他的代碼庫,如:http://phpmaster.com/integrating-with-facebook/或http://thinkdiff.net/facebook/graph-api-iframe-base-facebook-應用程序開發的PHP-SDK-3-0 / – 2012-01-12 05:32:41

相關問題