2011-06-06 102 views
3

我试图做一些本地托管的Facebook开发,但我在大学网络上,因此所有从我的计算机传出的连接都需要通过我们的代理服务器。我遇到的主要问题是,我似乎无法找到任何设置Apache来使用代理服务器的文档,而不是作为代理服务器的ACT。PHP本地托管,通过代理服务器连接到外部资源

然而,考虑到这一点,也许当我做一个“cURL”请求或一个fopen,Apache不执行数据检索,而是PHP驱动程序这样做。旧版本允许您在PHP.ini文件中设置全局代理,但不是在PHP 5中。

我必须使用代码来实际设置默认值,并且无法找到任何可以永久设置它们的配置文件。例如,该设置视频流,以便FOPEN CAN功能:

$r_default_context = stream_context_get_default 
    (
    array 
     (
     'http' => array 
      (// All HTTP requests are passed through the local NTLM proxy server on port 8080. 
      'proxy' => 'tcp://proxy.munged.edu:8080', 
      'request_fulluri' => True, 
      ), 
     ) 
    ); 

但这不会设置这是需要作为一切使用卷曲,我必须这样做:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_PROXY, "http://proxy.munged.edu:8080"); 
    curl_setopt($ch, CURLOPT_PROXYPORT, 8080); 

是否有任何人谁知道如何设置所有需要传出连接的东西来使用这个代理,因为我不会编写特定于此计算机的代码(因为我的计划是在本地处理我的代码,然后在完成时将其上传到某个Web空间:更改/上传/刷新周期比更改/刷新周期更耗时)

编辑:

为了澄清,我已经将所有这些包含在一个名为“proxyconfig.php”的文件中,然后检查它是否存在,并将它包含在顶部。如果没有办法在配置文件中设置默认值,那么让方法设置facebook.php页面用于其API所需的所有内容将是awesom。

+5

即时通讯不知道这是可能的,因为脸书需要回拨到您的服务器,除非您的服务器可以通过代理和防火墙连接,否则无论传出黑客,它都会失败 – 2011-06-06 22:32:56

+0

http://forum.developers.facebook.net/viewtopic。 php?id = 6461 我在facebook论坛上发现了这个非常有用的话题 – 2011-07-03 22:48:10

回答

1

假设应用程序处于iframe模式(FBML应用程序要求Facebook能够回拨到您的服务器),您的方法才是正确的。

如果问题希望能够在本地开发和部署到远程站点以最小的修改你的文件,我建议扩大BaseFacebook一个名为LocalBaseFacebook类新的和不断变化的CURL_OPTS到:

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_TIMEOUT  => 10, 
    CURLOPT_USERAGENT  => 'facebook-php-3.0', 
    CURLOPT_PROXY   => 'http://proxy.munged.edu:8080', 
    CURLOPT_PROXYPORT  => 8080 
); 

当部署出来时,根据主机名或某些唯一标识的属性/配置(甚至可以使用$ _GET变量,例如?is_local = 1)实例化Facebook类时进行切换,并将其附加到您的末尾画布网址。