Je travaille sur des tâches cron dans laravel 5.2, lorsque j’essaie d’appeler une fonction de contrôleur à partir de l’horaire prévu pour créer une feuille Excel lorsqu’elle se met à erreur. mais fonctionne bien dans le facteur.
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
Problème avec l'autorisation du fichier temporaire pour zipArchive?
J'obtiens l'erreur ci-dessus tout en sauvegardant la feuille phpexcel dans le répertoire (777).
$Excel_path = 'SubmittedSheets/'.$userId.'-'.uniqid().'.xlsx';
$objWriter->save($Excel_path);
Besoin d'un chemin absolu pour enregistrer le fichier Excel dans AWS Ec2 Linux pour PHPExcel.
$Excel_path = '/var/www/html/MyProject/public/SubmittedSheets/'.$userId.'-'.uniqid().'.xlsx';
$objWriter->save($Excel_path);
J'ai essayé beaucoup de choses et passé beaucoup de temps. La solution pour Ubuntu + Vesta + Nginx + Apache était dans le fichier:
:/home/admin/conf/web/your-domain.com.Apache2.ssl.conf
configurer le dossier tmp comme dans mon exemple:
<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>
n'oubliez pas de redémarrer le service Apache
Je l'ai résolu sur mon système Mac OS en supprimant simplement la ligne.
;sys_temp_dir = "/tmp"
dans php.ini
, c.-à-d. le changer en
sys_temp_dir = "/tmp"
Répertoire dans lequel les fichiers temporaires doivent être placés. Par défaut, valeur par défaut du système (voir sys_get_temp_dir).
Vous ne savez pas avec certitude quel répertoire il a essayé d'utiliser par défaut, éventuellement /var/tmp
, sur lequel mon installation Homebrew PHP ne semble pas être autorisée à écrire.