2016-10-22 9 views
-1

私のmac xamppでこのphpscriptを実行すると、PDFファイルではなく正常に戻ることができます。しかし、私はそれがdocxファイルからPDFファイルを作成することができますマック端末から実行します。UnoconvがPHPスクリプトでPDFファイルを作成しない

<?php 
    $source_file = 'c++ documentation.docx'; 
    $cmd = "unoconv/0.7/bin/unoconv"; 
    $command = sprintf("/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 
    echo shell_exec($command); 

    echo "yoyo"; 

    if(shell_exec($command)){ 
     echo "successful"; 
    }else{ 
     echo "failed"; 
    } 
?> 

これは私の編集したコードであり、sprintf():それはあまり引数がありません。

This is the part where it give this message but it said successful and not pdf files were found

+0

したがって、スクリプトはCLIから実行すると成功し、Webサーバー経由でスクリプトを要求すると失敗します。 –

+0

これは端末のCLIで成功しましたが、xamppウェブサーバで失敗しました – user3711175

+0

私はコマンドをどこかに印刷してから、CLIから実行しようとしました –

答えて

0

あなたは、そうでない場合、シェルはその特殊文字を解釈して、シェルの引数をエスケープする必要があります:それはあなたから利用できないようだと

$source_file = 'c++ documentation.docx'; 
$command = sprintf("unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 

は、あなたのunoconv/0.7/bin/unoconv実行ファイルへのフル(絶対)パスを提供します$PATH環境変数:

$command = sprintf("/path/to/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 

また、absシェルを呼び出す前に、unoconv/0.7/bin/ディレクトリから$PATH環境変数に移動してください。たとえば、this投稿を参照してください。

明らかに、$source_fileはカレントディレクトリにあるはずです。それ以外の場合、コマンドはそれにアクセスできません。

+0

どうしたらいいですか?それはターミナルと呼ばれ、それに入れられていますか? – user3711175

+0

/アプリケーション/ XAMPP/xamppfiles/htdocs /phpdocx/unoconv/0.7/bin/unoconv これは本当の意味ですか? – user3711175

+0

unoconv [options] file [file2 ..] LibreOffice unoconvオプションでサポートされている任意の形式から変換する-c、--connection = stringカスタム接続文字列を使用-d、 --doctype = typeドキュメントタイプ(ドキュメント、グラフィックス、プレゼンテーション、スプレッドシート)を指定します。-e、--export = name = valueエクスポートフィルタオプションを設定します。 -e PageRange = 1-2 -f、--format = format出力形式を指定します。-F、--field = name = valueユーザ定義のテキストフィールドを値に置き換えます。 -F Client_Name = "Oracle" -i、--import = stringインポートフィルタオプション文字列を設定します。 -i utf8 -lしかし、それは成功したと答えた – user3711175

関連する問題