web-dev-qa-db-fra.com

ZipArchive :: close (): Echec de la création d'un fichier temporaire dans AWS EC2 Linux

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);
6
151291

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); 
4
151291

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>

exemple d'image

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.

0
Magnus W