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

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

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);

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

0

Решение

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

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

Сценарий А:

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

Сценарий Б:

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]