Я пытаюсь вызвать мой скрипт на python для процесса твиттера через PHP на компьютере с Ubuntu. В этом отношении я использую exec () следующим образом:
exec('python TwitterSearchProcess.py > /dev/null 2>&1 & echo $!');
Используемый мной скрипт отлично работает в терминале. Однако с тем же вызовом через PHP это не работает. Я попробовал это с другим скриптом Python, и он работал хорошо, но я не знаю, в чем разница между моими двумя скриптами. Следующий скрипт представляет скрипт, работающий на PHP и терминале.
import sys
file = open("testscript.txt", "a")
file.write("hello")
file.close()
Следующий скрипт представляет собой процесс потоковой передачи Twitter с помощью tweepy, который работает только в терминале.
import sys
import tweepy
import os
access_token = ""access_token_secret = ""consumer_key = ""consumer_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
directory = os.path.dirname(os.path.abspath(__file__))+"/"+sys.argv[1]+"/"
if not os.path.exists(directory):
os.makedirs(directory)
class CustomStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
def on_data(self, data):
fo = open(directory+"StreamingResults.txt", "a")
fo.write(data)
def on_error(self, status_code):
print >> sys.stderr, 'Encountered error with status code:', status_code
return True # Don't kill the stream
def on_timeout(self):
print >> sys.stderr, 'Timeout...'
return True # Don't kill the stream
sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
if len(sys.argv)== 3:
sapi.filter(track=[sys.argv[2]])
if len(sys.argv)== 4:
sapi.filter(track=[sys.argv[2],sys.argv[3]])
if len(sys.argv)== 5:
sapi.filter(track=[sys.argv[2],sys.argv[3],sys.argv[4]])
Я проверил права доступа и установил всю папку моих сценариев на 777. И еще раз, если я запускаю потоковый сценарий в терминале, я получаю следующее предупреждение, хотя сценарий работает нормально:
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Это как-то связано с моей проблемой?
Заранее спасибо за ваши ответы.
Задача ещё не решена.
Других решений пока нет …