file_get_contents выдаёт 403 Forbidden

12
big boy
На сайте с 18.11.2006
Offline
356
6782

PHP скрипт переехал на соседний сервер того же хостера. На старом сервере всё ок. На новом названия, пути chmod и всё остальное в таком же виде, включая версию php.

Выдает такую ошибку:

warning: file_get_contents(http://site.ru/api/file.json) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /var/www/user/data/www/site.ru/api/script.php on line 827.

site.ru - это мой сайт, на котором работает скрипт.

827 строка и её окружение:


$url = 'http://site.ru/api/file.json';
$get_json = file_get_contents($url);
$exp = json_decode($get_json, true);

В интернетах везде посылают юзать cURL. Так бы и сделал, но уж больно не охота скрипт переделывать, тем более что он рабочий. Кстати, json в этом же скрипте читается нормально со стороннего сервера. Не читается только на моём.

Какую настройку глянуть, чтобы исправить положение?

✔ Как я генерирую статьи через ИИ, которые приносят трафик - https://webmasta.ru/blog/16-vkalyvayut-roboty-ne-chelovek-stati-s-pomoschyu-ii-kotorye-prinosyat-trafik
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1
Так бы и сделал, но уж больно не охота скрипт переделывать

Чего там переделывать?

Напишите функцию curl их вагон и маленькая тележка и просто замените file_get_contents на эту функцию. Дело 5-ти минут.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
big boy
На сайте с 18.11.2006
Offline
356
#2
LEOnidUKG:
Чего там переделывать?

Напишите функцию curl их вагон и маленькая тележка и просто замените file_get_contents на эту функцию. Дело 5-ти минут.

Я не программист, только что-то простое сам могу написать и если честно с cURL никогда не работал.

Научится не проблема, но хочу оставить это напоследок. Сейчас даже интересно стало, почему не хочет работать в таком виде, когда на другом сервере работает.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
Я не программист

Вы философ :)

Сейчас даже интересно стало

Ну если думаете так решиться ваша проблема... главное, чтобы вам было хорошо.

samimages
На сайте с 31.05.2009
Offline
427
#4

big boy, а простым путем типа DOCUMENT_ROOT вместо URL не пойти?

Опыт как иммунитет — приобретается в муках! Аудит семантики от 15К [долго] - ЛС
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5
site.ru - это мой сайт, на котором работает скрипт.

Посыпаю голову пеплом, не прочитал это.

Ёмаё ТС :)

Строчку:

$url = 'http://site.ru/api/file.json';

замените на:

$url = $_SERVER['DOCUMENT_ROOT'].'/api/file.json';

big boy
На сайте с 18.11.2006
Offline
356
#6
LEOnidUKG:
Ну если думаете так решиться ваша проблема... главное, чтобы вам было хорошо.

Мне кажется проблема сейчас в какой-то ерунде и думал, что её решить проще, чем изучить curl.

Если я не прав, то не откажусь от curl функции, которая решила бы мою задачу (разложить json на массив).

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7

Ещё лучше уточню.

site.ru и "PHP скрипт переехал" это один и тот же аккаунт и сервер?

big boy
На сайте с 18.11.2006
Offline
356
#8
LEOnidUKG:
Посыпаю голову пеплом, не прочитал это.

Да я уже после создания темы уточнил. Это мой косяк, не думал, что так быстро кто-то в теме появится )))

LEOnidUKG:
$url = $_SERVER['DOCUMENT_ROOT'].'/api/file.json';

Мой спаситель! 😂 Заработало! Спасибо!

samimages
На сайте с 31.05.2009
Offline
427
#9

LEOnidUKG, а какая разница? Если сайт его, то про .htaccess-ы он как бы знает))) до переезда-то все работало)))

---------- Добавлено 21.01.2015 в 20:10 ----------

LEOnidUKG, вопрос кстати есть...

Если ТС переехал на другой сервер и его полулокальное обращение по 80 порту отвалилось, а до этого все работало... какая причина?

403 - можно получить без .htaccess, если просто папки просматривать, а у ТС обращение к файлу.

Проблема видимо в настройке сервера, т.е. новый сервер не понимает .json?

Просто чувствую, что понимаю где искать, а директиву не помню...

totamon
На сайте с 12.05.2007
Offline
437
#10

я бы проверил все же переменные php, даже на соседних серверах могут быть разные настройки, смахивает что allow_url_fopen отключен.

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий