PHP локально размещается, подключается к внешним ресурсам через прокси-сервер - PullRequest
3 голосов
/ 07 июня 2011

Я пытаюсь сделать какую-то локальную разработку Facebook, но я в сети университета, и поэтому все исходящие соединения с моего компьютера должны проходить через наш прокси-сервер. Основная проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти никакой документации для настройки apache для использования прокси-сервера, а не для ACT в качестве прокси-сервера.

Однако, подумав об этом, возможно, когда я делаю запрос "cURL" или fopen, этот apache не выполняет извлечение данных, а вместо этого это драйверы PHP. Более старые версии позволяли вам настроить глобальный прокси в файле PHP.ini, но не в PHP 5.

Я должен использовать код, чтобы фактически физически установить значения по умолчанию и не могу найти какие-либо файлы конфигурации, где я могу установить их навсегда. Например, это устанавливает потоки, чтобы fopen мог функционировать:

    $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, я должен сделать это:

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

Есть ли кто-нибудь, кто знает, как настроить все прокси-серверы для использования этого прокси-сервера, поскольку я не буду писать код, специфичный для этого компьютера (потому что я планировал работать над моим кодом локально, а затем загрузить его к некоторому веб-пространству, когда это будет сделано: цикл изменения / загрузки / обновления НАМНОГО больше времени, чем просто цикл изменения / обновления)

редактирование:

просто чтобы уточнить, я включил все это в файл с именем "proxyconfig.php", затем проверил его наличие и включил () - вверху. если нет способа установить значения по умолчанию в конфигурационных файлах, то иметь методы для настройки всего того, что требует страница facebook.php, используемая для их API, было бы замечательно.

1 Ответ

1 голос
/ 15 июня 2011

Ваш метод верен, при условии, что приложение находится в режиме 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
);

При развертывании сделать переключатель, когдасоздание экземпляра класса Facebook на основе имени хоста или некоторого уникально идентифицирующего свойства / конфигурации (вы даже можете использовать переменную $ _GET, например? is_local = 1) и присоединить ее к концу URL-адреса Canvas.

...