它的路徑是:/Applications/LibreOffice.app/Contents/MacOS/sofficephp
php調用具體轉換命令爲:node
<?php switch(strtolower(PHP_OS)){ case 'darwin': $libreoffice = '/Applications/LibreOffice.app/Contents/MacOS/soffice'; break; case 'linux': $libreoffice = 'sudo /usr/bin/libreoffice'; break; case 'windows': $libreoffice = 'C:\Program Files\LibreOffice 5\program\soffice.exe'; break; default: $libreoffice = 'sudo /usr/bin/libreoffice'; } $inputDir = WEB_ROOT . '/web' . $pdfupload_dir; $outputFile = WEB_ROOT . '/web' . $node_ppt_file['uri'] . $node_ppt_file['filename']; $cmd = "{$libreoffice} --headless --convert-to pdf --outdir {$inputDir} {$outputFile} 2>&1"; exec($cmd); //exec命令的第2、三個參數能夠輸出具體報錯信息(固然這個報錯是結合命令末尾的:2>&1) //$res = exec($cmd,$output,$return_var); //print_r($output); //print_r($return_var); //exit;
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir /Users/Bruce/www/tp_center/frontend/web/uploads/casepdf/20171204/ /Users/Bruce/www/tp_center/frontend/web/uploads/caseppt/20171204/50112bdd50d6a36e87b5b91a9ffe6821.pptx 2>&1
解決方法:linux
I had the same problem on MacOS High Sierra, PHP 7.0 installed from Homebrew. The problem is that FPM $PATH
contains (as echoed by <php echo getenv('PATH'); ?>
) /usr/bin:/bin:/usr/sbin:/sbin
, which doesn't include Brew's /usr/local/bin/
install path.web
To solve I addedmacos
env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
apache
to /usr/local/etc/php/7.0/php-fpm.d/www.conf
, restarted php70 and worked!windows
1.PHP 調用exec執行linux 系統命令時,是以apache 默認user執行,user設置在 httpd.conf文件centos
User ×××××php7
Group ××××app
2.若是直接調用exec ('****') 執行root級命令,會報權限不足,這時須要用 sudo exec ('')
3.sudo 執行過程須要輸入用戶密碼,勢必對PHP執行帶來極大不便,如何取消密碼、屏蔽過程信息等,能夠在 sudo 配置文件/etc/sudoers裏設置
添加sudo用戶
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
apache ALL=(ALL) NOPASSWD: ALL
註釋掉 Defaults requiretty (屏蔽中途信息)
添加PATH: Defaults secure_path = /sbin:/bin:/usr/sbin
4.一些可執行腳本須要調用lib,默認不會繼承root的LD_LIBRARY_PATH ,報錯以下:
error while loading shared libraries: libavformat.so.56: cannot open shared object file: No such file or directory
解決辦法:編輯 /etc/lib.so.conf
添加相應lib路徑:/usr/ffmpeg/lib/
執行sudo ldconfi
以上是我遇到的坑,看到這篇文章的童鞋,但願大家能跳過這些坑。