curl — выберите файл конфигурации OpenVPN через скрипт php

Я использую openvpn на своем собственном выделенном облачном сервере (Ubuntu). Для этого я создал интерфейс, выполнив все шаги, написанные в этот руководство. Все работает, когда я использую терминал, как описано в руководстве. Также, когда я пытаюсь подключиться к интерфейсу через curl curl_setopt($ch, CURLOPT_INTERFACE, "tun0"); это работает отлично. Но для этого я должен выполнить следующую инструкцию в терминале, прежде чем запускать скрипт php:

openvpn "path/to/my/file.ovpn"

Когда я хочу изменить IP-адрес, я должен выполнить вышеупомянутое утверждение, но с другим file.ovpn,

Но я хочу изменить file.ovpn в моем PHP-скрипте, как:

exec('sudo openvpn path/to/my/file.ovpn');

Но это не работает. Я всегда получаю ошибку curl error: Could not resolve host: tun0, Так что я делаю не так? Это вообще возможно?

На данный момент файлы конфигурации находятся в корневой папке. Так может быть, это проблема авторизации / доступа?

0

Решение

Скорее всего, sudo завершается неудачно, он пытается запросить пароль, а вы его не предоставляете, ИЛИ пользователя, с которым работает PHP, нет в файле sudo, и он выдает ошибку. в этом случае позор вам за то, что вы игнорировали stderr и не замечали этого.

в любом случае, если php запускается как пользователь «www-data», добавьте это в / etc / sudoers

www-data ALL=(ALL) NOPASSWD: /usr/bin/openvpn path/to/my/file.ovpn

просто замените www-data тем пользователем, который запускает php (в linux, чаще всего это пользователь www-data), и / usr / bin / openvpn, где бы ни находился ваш бинарный файл openvpn
и предупреждение, это позволяет пользователю выполнить точную команду /usr/bin/openvpn path/to/my/file.ovpn как root без пароля. который, я верю, решит вашу проблему здесь.

0

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

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

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