0

私は、Excelファイルを開き、それらを開いたテンプレートと比較するコントローラを備えたZF3プロジェクトを持っています。生産システム上の相違

私の開発ノート(xampp)では、すべてが正常に動作します。私の運用システム(ubuntu)ではphpspreadsheetがエラーを引き起こします(私はそれが1つだと思います)。私のコードからここに

スニペット:

$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"; 

basePathを()が動作しないので、私はすでに非相対パス内のフォルダを持って、それがどんな結果を与えることはありません。

echo文は、サーバログにエラーが発生しないためです。私の開発システムでは、エラーがロードステートメントにあるように見えます。

最初の質問:ここで相対パスを使用するにはどうすればよいですか?

2番目の質問:スプレッドシートのクラスに何か問題がありますか?

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

が、それは問題であり、それはデベロッパー版を持っているので:

これは作曲がロードされて何ですか?この時点では、私はファイルのパッチで遊んでいたので、かなり混乱していました。フォルダ内の権限を手動で変更しました。サーバーログをチェックしました。ここで

フォルダ内の権利:

enter image description here

感謝どれでも役立つ提案。

答えて

0

最初の質問への回答(たぶん):だから

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

あなたの場合:アプリケーションがZendSkeletonApplicationに基づいている場合、その後、あなたは(index.phpから)、アプリケーションのルートからの相対パスを使用することができますデータファイルは<application root>/public/filesにありますので、コントローラ/サービス/ etcから読み込むことができます。 public/files/<file name>パスを使用します。あなたはそれを例えばテストすることができます。 file_exists function

私はあなたの2番目の質問に答えることができないんだけど、ここではいくつかの提案(OK、質問が...)、次のとおりです。

  • あなたの(生産)、サーバーのレスポンスのステータスコードは何ですか?
  • サーバーのアカウント(www-data?)からデータファイルへの読み取り/書き込みのアクセス権がありますか?
  • phpspreadsheetはPHPの拡張機能に依存しますか?開発マシンとサーバーの両方にインストールしていますか?
  • サーバーにはどのPHPバージョンがインストールされていますか?あなたまたはphpspreadsheetは、そのバージョンで利用できない機能を使用していますか?
  • Apacheを経由するのではなく、PHPの組み込みサーバーを使用してプロジェクトを実行してみてください(ただし、ではありません)。問題の再現を試みてください。
関連する問題