amazon ec2 — PHP ZipArchive не создает zip, кроме случаев, когда он запускается вручную с помощью команды php

Прошло несколько часов под мостом, и код создания zip, с которым я работаю, создаст zip, только если я запустил его с терминала ssh с помощью команды php, как показано ниже:
php zipcreate.php
Так что я знаю, что код работает. Я запускаю это на сервере Ubuntu Debian Amazon EC2. Все соответствующие файлы принадлежат пользователю ubuntu, то есть пользователю, в который я вошел, когда я запускаю скрипт вручную. Это не будет работать на всю жизнь, когда я выполняю скрипт из браузера через URL сайтов. Страница загружается, но без почтового индекса.

Я даже изменил следующие строки в etc / apache2 / envvars для пользователя ubuntu, но безуспешно.
экспорт APACHE_RUN_USER = www-данные
экспорт APACHE_RUN_GROUP = www-данные

Что в мире мне не хватает. Я почти уверен, что не дублирую вопрос о переполнении стека, так как уже прочитал их все.

Кстати, вот почтовый индекс на всякий случай:
$ files = array (‘test.txt’);
$ zipname = ‘file.zip’;
$ zip = new ZipArchive;
$ zip-> open ($ zipname, ZipArchive :: CREATE);
foreach ($ files as $ file) {
$ Zip-> AddFile ($ файла);
}
$ Zip-> близко ();

0

Решение

Если вы можете запустить его как пользователь, но не можете с помощью веб-приложения, это означает, что пользователь apache (www-data) не может писать в этот каталог.

Вы должны предоставить разрешение на запись www-данных в целевой каталог:

chmod +w /your/target/directory

Более безопасный способ сделать это — изменить владельца каталога и разрешения:

chown -R www-data:www-data /your/target/directory
chmod 775 /your/target/directory #change it if you need
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru