Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
14 / 9 / 13
Регистрация: 10.09.2012
Сообщений: 1,124

Права для команды exec()

02.02.2025, 10:25. Показов 1127. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Хочу выполнить команду
PHP
1
2
3
$command = 'gammu sendsms TEXT +7*** -text "Test message"';
$output = exec($command);
echo $output;
Ответ
Error opening device, you don't have the required permission.
Понимаю, что нужны права, но кого куда добавить не догоняю. Подскажите.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2025, 10:25
Ответы с готовыми решениями:

И снова о php exec() - выполняются не все команды
Проблема такая - работают обычные команды вроде ls или groups но например exec("/usr/bin/aplay /var/www/html/test.wav", $ret, $err) не...

Не отображать консоль при выполнении команды через exec
Здравствуйте, я кроном запускаю через exec консольную команду вот как она выглядит: $result = exec(__DIR__ . '/phantomjs ' . __DIR__ ....

Получить лог exec(), после выполнения команды на удаленном ПК
Здравствуйте. Имеется команда, которая запускается на удаленном ПК, после отработки она выводит информацию на экран. Мне эту...

2
7 / 6 / 3
Регистрация: 16.08.2015
Сообщений: 181
02.02.2025, 15:46
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
declare(strict_types=1);
/**
 * Отправляет SMS через Gammu
 * 
 * @param string $phone Номер получателя в международном формате (+7...)
 * @param string $message Текст сообщения (до 160 символов для латиницы)
 * @param string $gammuPath Путь к исполняемому файлу Gammu (по умолчанию 'gammu')
 * 
 * @return array Массив с результатами:
 *   [
 *     'success' => bool,      // Статус отправки
 *     'output' => string,     // Полный вывод консоли
 *     'error' => string,      // Текст ошибки (если есть)
 *     'command' => string     // Выполненная команда
 *   ]
 * 
 * @throws RuntimeException Если Gammu не найден в системе
 */
function sendSmsViaGammu(
    string $phone,
    string $message,
    string $gammuPath = 'gammu'
): array {
    // 1. Валидация параметров
    if (!preg_match('/^\+[\d]{11,15}$/', $phone)) {
        throw new InvalidArgumentException("Неверный формат номера: {$phone}");
    }
 
    if (empty(trim($message))) {
        throw new InvalidArgumentException("Сообщение не может быть пустым");
    }
 
    // 2. Проверка доступности Gammu
    exec("command -v {$gammuPath} 2>&1", $_, $exitCode);
    if ($exitCode !== 0) {
        throw new RuntimeException("Gammu не найден по пути: {$gammuPath}");
    }
 
    // 3. Подготовка команды
    $args = [
        'sendsms',
        'TEXT',
        escapeshellarg($phone),
        '-text',
        escapeshellarg($message)
    ];
 
    $command = escapeshellcmd($gammuPath) . ' ' . implode(' ', $args) . ' 2>&1';
 
    // 4. Выполнение команды
    $output = [];
    $exitCode = 0;
    exec($command, $output, $exitCode);
    $fullOutput = implode(PHP_EOL, $output);
 
    // 5. Анализ результатов
    $result = [
        'success' => $exitCode === 0,
        'output' => $fullOutput,
        'error' => '',
        'command' => $command
    ];
 
    if ($exitCode !== 0) {
        $result['error'] = $this->parseGammuError($fullOutput);
    }
 
    return $result;
}
 
/**
 * Парсит распространенные ошибки Gammu из вывода
 */
private function parseGammuError(string $output): string
{
    $patterns = [
        '/No network service/i' => 'Нет сети',
        '/No connection to phone/i' => 'Нет подключения к модему',
        '/Invalid number format/i' => 'Неверный формат номера',
    ];
 
    foreach ($patterns as $regex => $message) {
        if (preg_match($regex, $output)) {
            return $message;
        }
    }
 
    return 'Неизвестная ошибка: ' . substr($output, 0, 50);
}
Добавлено через 1 минуту
продолжения файла
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* Пример использования */
try {
    $result = sendSmsViaGammu(
        '+79123456789', 
        'Привет! Это тест из PHP скрипта ������',
        '/usr/bin/gammu' // Можно опустить, если gammu в PATH
    );
    
    echo $result['success'] 
        ? "SMS отправлено!" 
        : "Ошибка: {$result['error']}";
        
    echo "<pre>Команда: {$result['command']}\nВывод: {$result['output']}</pre>";
    
} catch (Exception $e) {
    die("Фатальная ошибка: " . $e->getMessage());
}
0
14 / 9 / 13
Регистрация: 10.09.2012
Сообщений: 1,124
03.02.2025, 18:13  [ТС]
Лучший ответ Сообщение было отмечено gogolik как решение

Решение

Тоже самое.
Warning: No configuration read, using builtin defaults! Error opening device, you don't have the required permission.

Добавлено через 13 минут
Решение
sudo adduser www-data dialout
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2025, 18:13
Помогаю со студенческими работами здесь

выставление прав на чтение/модификацию (666/777) файлов, при заливке на хост сайта
день добрый скажу сразу, заголовок может быть некорректен в связи с нулевыми знаниями в пхпе у автора топика, то бишь у меня вот,...

не работает функция exec
Здравствуйте всем! Пытаюсь консольным архиватором разархивировать test.rar: &lt;?php $arch_name='c:\test.rar'; ...

Распределение прав доступа к сайту
Подскажите, как осуществить распределение прав доступа к сайту, например один пользователь может добавлять информацию и просматривать...

Вызов консольных команд unix средством php
возможно ли это ? например вызов команды &quot;mkdir papka&quot; , создающая папку papka . или другую команду через php скрипт ?

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru