ローカルでインストールしたcomposerライブラリを開発環境に移したい
したいこと
・htmlでボタンを押したらxlsxの出力
phpspreadsheetというライブラリをcomposer経由で実装しようと思っています。
ですがリモートでの開発の為、composerとライブラリをローカルでインストールし、開発環境に移しました。
ですが、以下でエラーが出てしまいます。
$spreadsheet = new Spreadsheet();
原因はパスが通っていないことだと思います。
ほかに考えられる原因はphpのバージョン違いですが、バージョン合わせてインストールしたので可能性は低いです。
なので今回聞きたいことは、パスの通し方とパスの記載方法になります。
とりあえず状況を。。
ディレクトリは
app
-controllers
|-controller.php
ci
public
-他html
-index.php
shell
vendor
-composer
-phpoffice/phpspreadsheet
-autoload.php
conposer.json
composer.lock
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
use PhpOffice\PhpSpreadsheet\Spreadsheet;
class Order extends CI_Controller{
function download_xlsx(){
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
}
require_once "vendor/autoload.php";
以上です。
ここでエラーが出てしまいます。
controllerで出力しようとしてるのがおかしいのでしょうか?
右も左も分からないので丸投げになってしまいますが、よろしくお願いします!
解決しました
原因はパスが通っていなかったのとfunctionの前にpublicが抜けてましたww
完全に初歩的ですね。。
<?php
require(APPPATH.'../vendor/autoload.php');
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
class spreadsheet extends CI_Controller {
public function download_xlsx()
{
$spreadsheet = new Spreadsheet();
これでエラーが消えました。
ちなみにcodeigniterだとrequireの前にAPPPATH.が必須なのかもですね。
APPPATH.無しだとエラーになります。
ちょっと詳しくは説明できないですが、appフォルダからの相対パス的な感じらしいです。
ここら辺もちゃんと勉強しときます!w
ご回答いただいた方ありがとうございました。