проблемы с php file_get_contents и длиной файла - PullRequest
0 голосов
/ 26 мая 2011

Я написал простой API, который объединяет данные с одного сервера на другой.Это очень простой $_GET API, в котором все данные добавляются в URL как GET-данные.

Итак, я получаю что-то вроде: http://example.com/api.php?param1=afdsa&param2=TTTT&.... и т. д.

Чтобы вызватьЯ использую file_get_contents($url); в первую очередь - мне не нужно содержание ответа.Мне просто нужно «дотронуться» до URL, чтобы он начал действовать.

У меня были проблемы с моим хостингом (shared, justhost), и я перешел на VPS.Я начал получать тайм-аут на мои вызовы API, и когда я проверил apache error.log, я увидел:

"failed to open stream: File name too long in ..."

И действительно - строка $url составляет около 450 символов.

Вопрос - где я могу изменить настройку для длины файла.Это не то же самое, что файловая система жесткого диска, потому что мой собственный компьютер получает ту же строку без проблем и без ошибок.также - у общего хостинга не было никаких проблем с этим URL.

VPS работает с Ubuntu 10.04 lts с версией PHP 5.3.2-1ubuntu4.9

Благодарим вас за помощьв течение двух дней

решено

Ну, вы знаете, как это, когда вы думаете, что знаете, где проблема, а ее нет?хорошо - это была проблема.Я переписал свой API, поэтому все, что он будет делать, это print_r($_GET);, и что вы знаете - он работал нормально.Итак, я начал добавлять строки одну за другой и обнаружил, что сценарий складывается в функцию php mail.Зачем?Я не знаю, возможно настройки почты не верны - но теперь, когда я закомментировал рассылку - все работает нормально.

Это все еще не объясняет мою ошибку «file to long», ноне берите в голову.Спасибо вам всем

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Ваша проблема не в file_get_contents, а в fopen или другой функции, которая пытается создать файл.Это может быть система кеширования - без кода.Другими словами, проблема не в длине URL - только в длине имени файла.
failed to open stream - это сообщение об ошибке от обработчика файла.
Длина URL не ограничена, и даже если она ограничена сервером(например, apache), он не будет предупрежден как ошибка.

0 голосов
/ 26 мая 2011

Похоже, ваш URI слишком длинный.

Релевантно: Какова максимальная длина URL в разных браузерах?

Рассмотрите возможность использования CURL, чтобы ПОСТАВИТЬ свои переменные в api.php

...