Можно ли внести изменения в файл /etc/resolv.conf на общем хостинге?

Есть ли другие способы настройки сервера для выполнения curl на php, если возникает ошибка "failed with status 0, response, curl_error Could not resolve host: go1.unisender.ru; Name or service not known, curl_errno 6"?
  • 7 августа 2023 г. 18:51
Ответы на вопрос 3
На shared хостинге у вас обычно нет прямого доступа к файлу `/etc/resolv.conf`, поскольку это системный файл и доступ к нему может быть ограничен. Вместо этого вам может быть доступна опция настройки DNS-серверов через панель управления вашего хостинг-провайдера.

Если у вас возникает ошибка "Could not resolve host", это означает, что ваш сервер не может разрешить DNS-имя `go1.unisender.ru` на IP-адрес. В таком случае, вместо того чтобы изменять настройки `/etc/resolv.conf`, вы можете попробовать следующие варианты:

1. Используйте IP-адрес вместо имени хоста: 
   Вместо `go1.unisender.ru` используйте IP-адрес (если известен) в вашем коде PHP. Например, `$url = 'http://IP-адрес/...';`.

2. Используйте другой DNS-сервер: 
   Попробуйте изменить DNS-серверы для вашего хостинг-аккаунта на другие, например, публичные DNS-серверы от Google (`8.8.8.8` и `8.8.4.4`) или Cloudflare (`1.1.1.1` и `1.0.0.1`). Это можно сделать через панель управления вашего хостинг-провайдера.

3. Обратитесь к службе поддержки хостинг-провайдера: 
   Если проблема сохраняется, свяжитесь с технической поддержкой вашего хостинг-провайдера и сообщите им о проблеме, чтобы они могли помочь вам разрешить DNS-имя на вашем сервере.
На shared хостинге не получится, но на полноценном VPS можно. Чтобы использовать curl с определенным IP-адресом, можно добавить флаг --resolve, например: curl --resolve go1.unisender.ru:443:217.77.111.4 https://go1.unisender.ru. Если вы работаете с PHP, то для достижения похожего результата можно использовать опцию CURLOPT_RESOLVE. Например, вместо этого: 
curl_setopt($ch, CURLOPT_URL, 'https://go1.unisender.ru');
можно сделать так: 
curl_setopt($ch, CURLOPT_RESOLVE, array('go1.unisender.ru:443:217.77.111.4')); 
Однако, на shared хостинге это не сработает, потому что он используется множеством пользователей, которым ваша правка может не понадобиться. Если вам нужен полный доступ и контроль, стоит рассмотреть возможность VPS. И еще одна рекомендация: привяжите ваш домен к правильному IP-адресу, чтобы он резолвился правильно.
На shared хостинге не получится, но на VPS полноценном это возможно. Можно использовать флаг "--resolve" в команде curl, чтобы указать конкретное разрешение DNS для запроса. Например:
```
curl --resolve go1.unisender.ru:443:217.77.111.4 https://go1.unisender.ru
```
Если вы работаете с PHP и используете библиотеку cURL, то можете использовать опцию CURLOPT_RESOLVE для того же самого эффекта.

К сожалению, на shared хостинге этот подход не сработает, так как на таком хостинге ресурсы общие и ваша правка может затронуть других пользователей. Если вам необходим полный доступ, рекомендуется перейти на VPS, где вы будете владеть всеми ресурсами. 

Также, для того чтобы ваш домен правильно резолвился, вам необходимо привязать его к правильному IP-адресу.
Похожие вопросы