ada dua masalah disini. Yang pertama adalah www-data (pengguna apache) tidak memiliki $HOME jadi libreoffice tidak bisa dijalankan jika tidak ada $HOME didefinisikan. Masalah kedua adalah, kecuali jika Anda secara khusus mengaturnya dengan cara ini (dan Anda benar-benar tidak seharusnya), apache tidak memiliki akses ke sistem /tmp direktori. Server web biasanya berjalan di lingkungan terbatas dan tidak memiliki akses penuh ke sistem file karena alasan keamanan yang sangat valid.
Jadi, Anda perlu i) memberi pengguna apache rumah dan ii) memberinya direktori yang dapat diaksesnya untuk menulis. Jadi, buat tmp direktori di folder yang sama tempat Anda menyimpan halaman web Anda dan kemudian menjalankan php berikut kode:
<?php
shell_exec('export HOME=/tmp && libreoffice --headless -convert-to pdf --outdir ./tmp /tmp/ayb/document_34.doc');
?>
Saya baru saja menguji dan berfungsi dengan baik di mesin saya. Pastikan ./tmp Anda memiliki izin yang disetel ke 777. Selain itu, Anda mungkin perlu me-restart apache jika Anda terlalu sering memainkannya. Itu berhenti bekerja untuk saya setelah beberapa saat ketika saya membuat perubahan dan saya perlu memulai ulang.
Saya memiliki masalah serupa di Debian dan saya menyelesaikannya.
Jalankan perintah Anda, tetapi dengan strace di awal, seperti ini:
strace -f -o output.txt soffice --headless --convert-to pdf (...)
Ini akan menghasilkan file log besar dengan setiap akses ke API sistem dan hasilnya.
Dalam kasus saya, di dekat garis 5000 ada sesuatu seperti ini:
open("/var/spool/libreoffice/uno_packages/cache/uno_packages", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 EACCES (Permission denied)
Mengikuti jejak ini, saya mengubah izin secara rekursif untuk folder /var/spool/libreoffice ke 777 .
Setelah itu, konversi mulai berfungsi untuk setiap pengguna.
Mungkin Anda juga mendapatkan Permission denied pada beberapa file lain, ini ditangani secara diam-diam, dan Anda perlu memperbaiki izin untuk pengguna Anda?