2016-07-27 46 views
1

我想將PHPExcel包含到Silverstripe 3站點以導出Excel表。現在我只是想考驗,但我得到這個錯誤試圖做到這一點的時候:require_once(PHPExcel/Classes/PHPExcel.php):未能打開流

【警告】require_once(/sitename/mysite/AddOns/PHPExcel/Classes/PHPExcel.php):未能打開流:沒有這樣的文件或目錄

事情是我知道這個文件存在,因爲我複製它自己,並重新檢查路徑反覆。所以,我決定「以及檢查文件是否存在」使用此代碼:

if(!file_exists(Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php')) { 
     echo 'sdf';exit; 
} 

的路徑是正確的(這是它被保存)根據差錯,但是 - 文件不存在。我也需要以同樣的方式文件,沒有運氣

require_once Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php'; 

我已經試過各種檢查文件的權限,參照使用../../父文件夾,直接調用它像AddOns/PHPExcel,將它移動到這個新的附加元件的文件夾(首先嚐試將PHPExcel類放在根上,發現Silverstripe不讀取它:))

我知道我做錯了什麼,但對於我的生活我看不到什麼。請幫助

感謝

+0

你能迴應Director :: baseURL()。'mysite/AddOns/PHPExcel/Classes/PHPExcel.php'和那個鏈接嗎?它打開正確的文件? –

+0

我認爲'Director :: baseURL()'指的是瀏覽器中的url,no表示項目所在的路徑。 –

+0

@JeffreyTroost做了回聲,並決定嘗試重定向,以防萬一 - 它指向正確的文件,但給了我一個403 Forbidden錯誤。給予每個人完全的控制(這是本地的),它也做了同樣的工作 –

回答

4

BASE_PATH是訪問網站根文件夾的最佳方式。

require_once(BASE_PATH . '/AddOns/PHPExcel/Classes/PHPExcel.php'); 

而且這是,如果你使用的不是作曲家,在你應該use composer正確的方式來解決這個問題只有一個問題。

1

正如指出的Director::baseURL()將返回URL,而不是文件路徑。

而是需要相對文件 Web根像這樣:

require_once(BASE_PATH . '/AddOns/PHPExcel/Classes/PHPExcel.php');

正如在其他的答案中指出雙方丹和巴里,這是最好使用作曲家依賴管理。

+1

BASE_PATH常量是最好的方式來做到這一點 –

+1

啊,謝謝!這就說得通了。更新我的回答以反映這一點。也許@CasperBritz應該考慮改變被接受的答案。 –

5

您應該考慮使用composer來包含PHPExcel類,這將避免需要手動require該類,並將幫助您進行依賴關係管理。

composer require phpoffice/phpexcel 
+1

那麼肯定會在未來開始使用它 –

相關問題