実現したいこと
- require 'vendor/autoload.php';を成功させ、ライブラリを読み込みたい
前提
LINUXのサーバで動作する、PHPでEXCELを操作するプログラムを開発しています。
PhpSpreadsheetライブラリが必要だということで、composerを使ってphpoffice/phpspreadsheetをインストールしました。PHPのバージョンが"7.3.31"なので、phpoffice/phpspreadsheetのバージョンも古い"^1.25"を使っています。(「^」はインストールした際に自動でつけられたものです)
リクエストをしているファイルは「/var/www/html/excel/PhpSpreadsheet」フォルダにあります。
該当のソースコード
php
1require 'vendor/autoload.php';
試したこと
composerがインストールされていない可能性があるとのことで調べました。
pc@username:~$ composer -v ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.7.2 2024-03-11 17:12:18
インストール
pc@username:~$ composer install Installing dependencies from lock file (including require-dev) Verifying lock file contents can be installed on current platform. Nothing to install, update or remove Generating autoload files 3 packages you are using are looking for funding. Use the `composer fund` command to find out more!
アップデート
pc@username:~$ composer update Loading composer repositories with package information Updating dependencies Nothing to modify in lock file Installing dependencies from lock file (including require-dev) Nothing to install, update or remove Generating autoload files 3 packages you are using are looking for funding. Use the `composer fund` command to find out more! No security vulnerability advisories found.
php composer.phar -Vをした結果、「Could not open input file: composer.phar」というエラーになりました。
PhpSpreadsheetがインストールされているか
pc@username:~$ composer show phpoffice/phpspreadsheet 1.25.2 PHPSpreadsheet - Read, Create and Write S...
jsonファイルの設定
json
1{ 2 "config": { 3 "platform": { 4 "php": "7.3.31" 5 } 6 }, 7 "require": { 8 "phpoffice/phpspreadsheet": "^1.25" 9 } 10}
念のため「^」を消してApacheをリスタートしてから試しましたが、やはりHTTP500エラーになりました。
vendorフォルダ、autoload.phpファイルの有無
pc@username:~/vendor$ ls -l -rw-r-xr-x 1 username username 771 4月 8 15:20 autoload.php drwxr-xr-x 2 username username 4096 4月 8 15:20 composer
各プログラムファイルの階層
Excelを操作するPHPファイル「tcpdf_MakeEXCEL.php」のある階層
html--- L--excel--- L--PhpSpreadsheet--- L--tcpdf_MakeEXCEL.php
autoload.phpの階層
home--- L--username--- L--composer.json L--composer.lock L--vendor--- L--autoload.php L--composer
補足情報(FW/ツールのバージョンなど)
LINUXの種類
Debian GNU/Linux 10 (buster)
vendorのパーミッションは「drwxr-xr-x」、autoload.phpのパーミッションは「-rw-r-xr-x」です
対応履歴
requireをincludeに変えてみる
php
1ini_set('display_errors', 'On'); 2include 'vendor/autoload.php';
結果:
Warning: include(vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/excel/PhpSpreadsheet/tcpdf_MakeEXCEL.php on line 5 Warning: include(): Failed opening 'vendor/autoload.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/excel/PhpSpreadsheet/tcpdf_MakeEXCEL.php on line 5
どうすればライブラリを読み込めるでしょうか。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー