Я использую это https://github.com/bbcrd/audiowaveform библиотека.
Все установлено правильно (используя метод build git, а не apt)
Когда я пытаюсь бежать audiowaveform -i test.mp3 -o test.dat -z 256 -b 8
в Терминал Это работает отлично.
Когда я пытаюсь запустить то же самое в php, используя exec
$cmd = "audiowaveform -i /var/www/html/test.mp3 -o /var/www/html/test.dat -z 256 -b 8";
$cmd .= " 2>&1 ";
exec($cmd,$error);
var_dump($error);
Это показывает эту ошибку
...
Done: 99%
Done: 100%
[11] => Recoverable frame level error: lost synchronization
[12] =>
[13] => Frames decoded: 13921 (6:03.650)
[14] => Generated 62645 points
[15] => Failed to write data file: /var/www/html/test.dat
[16] => Permission denied
Похоже, некоторые ошибки разрешения какой-либо помощи?
Любая помощь ?
Когда вы запускаете из командной строки, вы выполняете с правами пользователя. При запуске с веб-сервера имя пользователя отличается с разными разрешениями. Пользователь обычно www-data
Сначала создайте файл, если он не существует, чтобы вы могли установить разрешения
touch /var/www/html/test.dat
Дать разрешение кому-либо
chmod 777 /var/www/html/test.dat
Или вы можете изменить владельца на пользователя веб-сервера
chown www-data /var/www/html/test.dat
Лучше всего добавить группу, так что только вы двое можете написать
chown :www-data /var/www/html/test.dat
chmod 775 /var/www/html/test.dat
Других решений пока нет …