2014-11-26 5 views
0

Edit На самом деле, эта проблема может быть решена с помощью пути файла конфигурации в качестве параметра функцииОшибка при выполнении питон скрипт для отправки SMS с PHP

sm.ReadConfig(Filename="/home/myuser/.gammurc") 

Я использую Гамму библиотека для python. Моя идея состояла в том, чтобы создать скрипт python, который может отправлять SMS, чтобы позже вызвать его из скрипта PHP.

Вот код скрипта python.

#!/usr/bin/env python 

import gammu 
import sys 

sm = gammu.StateMachine() 

sm.ReadConfig() 

if len(sys.argv) != 3: 
    print 'Uso: sms.py MENSAJE DESTINATARIO' 
    sys.exit(1) 

rawtext = sys.argv[1] 
spttext = rawtext.split("*e*") 
text = " ".join(spttext) 

sm.Init() 

message = { 
    'Text': text, 
    'SMSC': {'Location': 1}, 
    'Number': sys.argv[2], 
} 

if (sm.SendSMS(message)): 
    print "OK" 

Если я использую этот скрипт из терминала работает нормально, проблема заключается в том, что, когда я называю сценарий из PHP с помощью Exec(), я получаю сообщение об ошибке из библиотеки Гаммы в то время, когда выполняются ReadConfig (функция):

gammu.ERR_CANTOPENFILE: {'Text': u'Can not open specified file.', 'Code': 28, 'Where': 'FindGammuRC via ReadConfig'} 

Я уже дал разрешение на веб-сервер использовать Гамму, выполнив команду «Судо AddUser DialOut WWW-данных», но я не знаю, что еще может быть проблема.

Это путь я называю скрипт PHP:

$rcmd="python /home/my_user/Escritorio/pythonSMS/sms.py -V 2>&1"; 
exec($rcmd, $output); 

Я ищу любую помощь или совет, спасибо.

ответ

0

От ошибки, которую вы опубликовали, казалось бы, что при выполнении этого через PHP существуют либо разрешения на доступ к каталогу, либо разрешения на чтение, установленные на пути, запрещающие пользователю PHP (при условии, что это выполняется с помощью веб-сервера, такого как apache), из поиск файла.

Самый простой способ сделать это было бы что-то простое, как это:

Сценарий A:

#!/usr/bin/env python 
file = open('/home/myuser/.gammurc' , r) 
for line in file: 
    print line 

Сценарий B:

<?php 
    $cmd = '/path/to/script/A'; 
    exec($cmd); 
?> 

Это должно, в теории, производят аналогичный ошибка. Если это так, проверьте права доступа к каталогу, а также разрешения на файл .gmamurc. Если это выполняется через веб-сервер, вам, скорее всего, потребуется 755 разрешений на «myuser», чтобы веб-сервер мог проходить через каталог, а затем читать файл, в котором файл имеет 644 разрешения.

Смежные вопросы