2011-05-26 87 views
0

我寫了一個簡單的API,將數據從一臺服務器集合到另一臺服務器。它是一個非常簡單的基於$_GET的api,其中所有數據都作爲GET數據附加到url。問題php file_get_contents和文件長度

所以我得到的是這樣的: http://example.com/api.php?param1=afdsa&param2=TTTT&....

爲了調用它,我用file_get_contents($url); 首先是 - 我並不真的需要答覆的內容。我只需要「觸摸」這個網址,這樣它就會啓動。

我有我的託管(共享,justhost)的問題,我已經搬到了VPS。 我開始讓我的API調用超時,當我檢查了Apache的error.log我已經看到:

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

事實上 - 在$url字符串是大約450個字符。

問題是 - 我在哪裏更改文件長度的設置。它與硬盤驅動器文件系統不一樣,因爲我自己的計算機使用相同的字符串,沒有問題,也沒有錯誤。 也 - 共享主機沒有任何問題,該網址。

的VPS運行的Ubuntu 10.04 LTS與PHP版本5.3.2-1ubuntu4.9

得到任何幫助,一直坐在那兩天

解決

那麼你知道如何是否當你認爲你知道問題在哪裏但它不是?好 - 那就是問題所在。 我已經重寫了我的API,所以它會做的是print_r($_GET);,你知道什麼 - 它工作正常。 所以我開始逐一添加這些行,並發現堆棧腳本是一個PHP郵件函數。爲什麼?我不知道,也許郵件設置不正確 - 但現在,當我評論了郵件 - 所有工作正常。

它仍然沒有解釋我的「文件到長」的錯誤,但沒關係。感謝大家

+1

我有一些你可以考慮的事情 - 爲什麼使用'file_get_contents'如果你需要做的就是「打」一切工作的URL?有cURL,有'header()'.. – 2011-05-26 13:11:45

+0

實際上,如果我將所有網址粘貼到瀏覽器地址欄,腳本也會堆疊,這不是我稱之爲的方式,也不是其他方式。該腳本運行,但我得到「PHP通知:未定義的索引:」,它需要很長的時間 – TwoDiv 2011-05-26 13:19:50

+0

嗯,這是PHP郵件的問題,編輯我的帖子 – TwoDiv 2011-05-26 14:04:32

回答

0

看起來你的URI太長了。

相關:What is the maximum length of a URL in different browsers?

考慮使用捲曲不發表您的變量api.php

+0

至少嘗試閱讀,什麼是該問題的接受答案。 URL長度不應該限制,450個符號是長度限制的荒謬數字。 – 2011-05-26 13:24:46

0

你的問題file_get_contents,但在fopen或其他功能,它試圖創建文件。它可以是緩存系統 - 不能說沒有代碼。 換句話說,問題不在url的長度 - 只在文件名的長度。
failed to open stream - 這是來自文件處理程序的錯誤消息。
URL的長度不受限制,即使受到服務器(例如apache)的限制,它也不會被警告爲錯誤。