it-swarm.com.ru

ZipArchive :: close (): сбой при создании временного файла в AWS EC2 Linux

Я работаю над заданиями cron в laravel 5.2, когда я пытаюсь вызвать функцию контроллера из расписания, чтобы создать лист Excel, получающий ошибку. но работает нормально в почтальоне.

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

Необходим абсолютный путь для сохранения файла Excel в AWS Ec2 Linux для PHPExcel.

$Excel_path = '/var/www/html/MyProject/public/SubmittedSheets/'.$userId.'-'.uniqid().'.xlsx';
$objWriter->save($Excel_path); 
4
151291

Я много чего перепробовал и провожу много времени. Решение для 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

0
Ігор Жовтанюк

Я решил это в своей системе Mac OS, просто раскомментировав строку

;sys_temp_dir = "/tmp"

в php.ini, т.е. меняя его на

sys_temp_dir = "/tmp"

Каталог, в котором должны быть размещены временные файлы . По умолчанию используется системное значение по умолчанию (см. Sys_get_temp_dir).

Не уверен, какой каталог он пытался использовать по умолчанию, хотя, возможно, /var/tmp, к которому моя установка Homebrew PHP, похоже, не имеет разрешения на запись.

0
Magnus W