laravel 5.2)でcronジョブに取り組んでいますが、スケジュールからコントローラー関数を呼び出してExcelシートを作成しようとすると、エラーが発生しますが、postmanで正常に実行されます。
ZipArchive::close(): Failure to create temporary: No such file or directory' in /var/www/html/Expenses/vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007.php:398
ZipArchiveの一時ファイルの権限に問題がありますか?
Phpexcelシートをディレクトリ(777)に保存しているときに上記のエラーが発生します。
$Excel_path = 'SubmittedSheets/'.$userId.'-'.uniqid().'.xlsx';
$objWriter->save($Excel_path);
AWS Ec2 Linux for PHPExcelでExcelファイルを保存するには、絶対パスが必要です。
$Excel_path = '/var/www/html/MyProject/public/SubmittedSheets/'.$userId.'-'.uniqid().'.xlsx';
$objWriter->save($Excel_path);
Mac OSシステムで行をコメント解除するだけで解決しました
;sys_temp_dir = "/tmp"
php.ini
、つまり次のように変更します
sys_temp_dir = "/tmp"
一時ファイルを配置するディレクトリ。デフォルトはシステムのデフォルトです(sys_get_temp_dirを参照)
ただし、デフォルトとして使用しようとしたディレクトリがわからない。おそらく/var/tmp
、私のHomebrew PHPインストールには書き込み権限がないようです。
私は多くのことを試し、多くの時間を費やしました。 Ubuntu + Vesta + Nginx + Apacheのソリューションはファイルにありました:
:/home/admin/conf/web/your-domain.com.Apache2.ssl.conf
私の例のようにtmpフォルダを設定します:
<Directory /home/admin/web/your-domain.com/public_html>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
php_admin_value open_basedir
/home/admin/web/your-domain.com/public_html:/tmp
php_admin_value upload_tmp_dir /tmp
php_admin_value session.save_path /tmp
</Directory>
apacheサービスを再起動することを忘れないでください