Назад | Перейти на главную страницу

Скрипт PHP работает на локальном сервере MAMP, но не на сервере IIS 8

У меня есть PHP-скрипт, который отображает твиты, встроенные в сайт, который я создал на своем локальном компьютере. Когда я загрузил сайт на свой сервер IIS 8.0, скрипт PHP больше не работает, и я получаю эту ошибку:

Предупреждение: недопустимый аргумент для foreach () в C: \ inetpub \ wwwroot \ i360_new \ footer.php в строке 76

Сценарий такой:

<?php
    ini_set('display_errors', 1);
    require_once('TwitterAPIExchange.php');

    /** Set access tokens here - see: https://dev.twitter.com/apps/ **/
    $settings = array(
        'oauth_access_token' => "xxxxx",
        'oauth_access_token_secret' => "xxxxx",
        'consumer_key' => "xxxxx",
        'consumer_secret' => "xxxxx"
    );


    /** Perform a GET request and echo the response **/
    /** Note: Set the GET field BEFORE calling buildOauth(); **/
    $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
    $getfield = '?screen_name=interactive360&count=1';
    $requestMethod = 'GET';
    $twitter = new TwitterAPIExchange($settings);
    $string = json_decode($twitter->setGetfield($getfield)
    ->buildOauth($url, $requestMethod)
    ->performRequest(),$assoc = TRUE);
    foreach($string as $items)
        {
            echo $items['text']."<br />";
        }
?>

Я думал, что это может быть проблема с версией PHP, но на моем локальном компьютере установлена ​​версия 5.4.10, а на моем сервере - версия 5.4.14.

Вы сравнивали оба сервера phpinfo ()? При работе почти в одной и той же среде каждый сервер может работать по-разному в зависимости от того, какие модули установлены.

Оказывается, это проблема SSL / CURL. В файле TwitterAPIExchange.php мне пришлось добавить эти две строки в массив параметров CURL:

CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false

Возможно, вы захотите убедиться, что строка $ не пуста. Я считаю, что ForEach выдаст эту ошибку, если вы предоставите пустую строку. Похоже, строка зависит от TwitterAPIExchange.php, я вижу «Требовать один раз», но убедитесь, что она настроена правильно.