2011-12-06 87 views
1

所以我一直在開發窗口。今天,我將我的文件移動到基​​於Linux的虛擬主機。我注意到:require_once在linux主機上失敗?

require_once dirpath(__FILE__) . DIRECTORY_SEPARATOR . "foo.php"` 

無法找到文件未找到錯誤。

我可以看到該文件存在於預期的位置。

這種性質是否存在一些已知問題?

編輯1:

我懷疑這可能是因爲Linux是區分大小寫的環保,無毒。我把我所有的駝峯文件名都轉換爲小寫。我仍然有問題。不幸的是,我的主機不允許遠程telnet訪問。我只能使用cPanel。還有其他建議嗎?

編輯2:

這竟然是與文件名的大小寫敏感的問題。打敗我爲什麼cpanel正在將他們展示在導致我身邊混亂的正確案例中。我必須轉換名稱使用全部小寫,然後上傳到服務器和事情都很好。當我試圖改變文件名中的情況時,Git確實給了我很多問題,但這是另一天的故事。

回答

4

如果從Windows轉移到Linux有在文件系統中的一個問題:

的Linux是區分大小寫的!

這意味着:在Windows上的「foo.php」和「Foo.php」完全是相同的文件,但在Linux上它們不是。 如果你有「Foo.php」,你不會通過搜索「foo.php」找到它。

1

Echo out你的dirpath(__FILE__) . DIRECTORY_SEPARATOR . "foo.php"
所以你100%肯定它的正確目錄。我敢打賭,它不是...

否則,這是一個權限問題,你將不得不仔細檢查。

+0

我之前做過這個,我張貼。該文件在那裏。一個有趣的事情是fileexists(文件名)返回false !.我在cpanel中看到該文件。不幸的是,我無法telnet到服務器。 PHP文件需要什麼perms? –

+0

你可以嘗試is_readable($ filename)並告訴你接收到了什麼輸出? – macjohn

+0

通常你會'SSH'不能telnet到主機,telnet是非常不安全的。 – Jakub

0

你可以ls -al foo.php所在的目錄,你可能有不正確的文件權限。