2017-07-31 173 views
0

我有一個ZF3項目,帶有一個打開excel文件的控制器,並將其與將要打開的模板進行比較。生產系統上的差異

在我的開發筆記本(xampp)上一切正常,在我的生產系統(ubuntu)phpspreadsheet導致錯誤(我認爲它是一個)。

這裏從我的代碼片段:

$fileName="./public/files/" . $fileName;  //.\ neu 
      echo $fileName; 
      $template= new Spreadsheet(); 
      $importdcl= new Spreadsheet(); 
      $template= \PhpOffice\PhpSpreadsheet\IOFactory::load('./public/files/Template_DCL_final.xlsx'); 
      $importdcl= \PhpOffice\PhpSpreadsheet\IOFactory::load($fileName); 
      echo "filename geladen"; 

我已經在非相對路徑的文件夾,因爲基本路徑()不工作,它不會給任何結果。

echo語句只是因爲服務器日誌不會給出任何錯誤。在我的開發系統上,我在生產系統上得到了echo文本,錯誤似乎出現在load語句中。

第一個問題:我怎麼能在這裏使用相對路徑?

第二個問題:我怎樣才能得到一個想法?電子表格類有什麼問題嗎?

這是作曲家裝什麼:

"phpoffice/phpspreadsheet" : "dev-develop", 

它是一個問題,因爲它有這個開發版本?在這一點上,我很困惑,因爲我玩文件的方式,我在文件夾中手動修改了權限,我檢查了服務器日誌,現在我沒有任何想法了。

以下文件夾中的權利:

enter image description here

知道的任何有幫助的建議。

回答

0

答案(希望)第一個問題:如果你的應用是基於ZendSkeletonApplication,那麼你可以使用相對路徑來您的應用程序根目錄(從index.php):

/** 
* This makes our life easier when dealing with paths. Everything is relative 
* to the application root now. 
*/ 
chdir(dirname(__DIR__)); 

因此,如果您數據文件位於<application root>/public/files,那麼你應該能夠從控制器/服務/等讀取它們。使用public/files/<file name>路徑。你可以用例如。 file_exists function

我不能回答你的第二個問題,但這裏有一些建議(OK,問題...):

  • 你是什麼(生產)服務器的響應的狀態碼?
  • 您是否具有從服務器帳戶(www-data?)讀取/寫入數據文件的權限?
  • phpspreadsheet是否依賴於任何PHP擴展?你有沒有在開發機器和服務器上安裝它們?
  • 服務器上安裝了哪些PHP版本?你或phpspreadsheet使用該版本可能不可用的任何功能嗎?
  • 嘗試不通過Apache運行您的項目,但使用PHP的內置服務器(但不要做它長期)並嘗試重現該問題。