Ошибка при выполнении скрипта Python для отправки SMS с PHP

0

Редактировать На самом деле проблему можно решить, используя путь файла конфигурации в качестве параметра функции

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

Я использую библиотеку Gammu для 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(), я получаю сообщение об ошибке из библиотеки Gammu в то время, когда работает функция ReadConfig():

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

Я уже дал разрешение веб-серверу использовать gammu, выполнив команду "sudo adduser www-data dialout", но я не знаю, что еще может быть проблемой.

Так я называю скрипт из PHP:

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

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

Теги:
exec
gammu

1 ответ

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 разрешения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню