У меня три сервера. Два - это действующие серверы, на которых размещены веб-сайты в Интернете. Один из них - это локальный тестовый сервер, который не отображается в Интернете в большей степени.
Я пытаюсь запустить PHP-скрипт, который отправляет сообщения в Twitter , и он полагается на curl. Когда я запускаю сценарий на своей локальной тестовой машине, он работает отлично. Когда я пытаюсь запустить его на любом из моих действующих серверов, он выдает следующую ошибку:
PHP Fatal error: Call to undefined function Abraham\TwitterOAuth\curl_init()
На моем локальном компьютере, когда я запускаю php --info | grep -i curl
, я получаю такой ответ:
/etc/php5/cli/conf.d/20-curl.ini,
curl
cURL support => enabled
cURL Information => 7.35.0
У меня есть SSH-доступ только к одному из моих действующих серверов (другой - платный хостинг с более ограниченными возможностями), и когда я запускаю ту же команду на этом сервере, я не получаю ответа. Командная строка возвращается ни с чем. Однако, если я перейду в каталог /etc/php5/cli/conf.d/
на моем реальном сервере, там будет файл 20-curl.ini
.
Все серверы основаны на Ubuntu, и я запустил apt-get install php5-curl curl
на всех из них, и все они говорят, что используют последнюю версию.
Вот последняя запутывающая деталь. на всех серверах, если я запускаю этот PHP-скрипт на любом из моих серверов, на моем локальном тестовом сервере и на обоих живых серверах, я получаю положительный ответ. Это код:
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
... и когда я запускаю его, я получаю следующий результат:
Curl: Enabled
Bottom line, кажется, что curl установлен на всех трех серверах, но что-то не так с установкой на обоих моих живых серверах.
Что я могу сделать, чтобы диагностировать и решить, почему мои живые серверы не могут запустить скрипт PHP, который мой локальный тест сервер может?
Скорее всего, вам не хватает этой библиотеки на сервере: https://github.com/abraham/twitteroauth
Ошибка PHP показывает, что он пытается загрузить функцию из TwitterOAuth, и он не работает, потому что библиотека отсутствует.
Другая возможность состоит в том, что ваш скрипт содержит какую-то библиотеку автозагрузчика, которая некорректно работает в среде вашего живого сервера (ищет библиотеку по неправильному пути ).