4

pdfファイルをテキストファイルに変換しようとしています。ターミナルからコマンドを実行すると正常に動作しますが、実行しようとするとPHP動作しません。

過去 4 時間からこの状況で立ち往生しています。Google で多くの時間を費やしていますが、解決策はありません。この問題を解決できる機関はありますか?

ファイルの所有者 - 誰も

shell_exec('/usr/bin/pdftotext /opt/lampp/htdocs/foldername/filename.pdf');

誰でも役立つソリューションを提供できますか?

usrまた、フォルダーの所有権を root から nobodyに変更し、フォルダーとそのコンテキストに 777 のアクセス許可を付与しようとしました。

4

5 に答える 5

5

pdftotext を実行するコマンドが正しくありません。

pdftotext に特定のファイルに書き込むか、ダッシュ「-」を使用して標準出力に書き込むように指示する 2 番目の引数が必要です。ただし、実際にプログラムでファイル名を pdf としてテキスト ファイルを作成する必要がある場合を除きます (これには書き込みが必要です)。 /opt/lampp/.../ フォルダーの権限)

これは少なくともpdftotext version 0.12.4

"Pdftotext は PDF ファイル PDF-file を読み取り、テキスト ファイルtext-fileを書き込みます。text -fileが指定されていない場合、pdftotext は file.pdf を file.txt に変換します。text -fileが '-' の場合、テキストはstdout に送信されます。」

したがって、あなたの質問に対する解決策は、次のようにファイル名の後にダッシュを追加するだけです。

<?php
$pdftext = shell_exec('/usr/bin/pdftotext /opt/lampp/htdocs/foldername/filename.pdf -');
echo $pdftext;

バイナリが存在し、PHP が shell_exec の使用を許可されており、権限があり、pdf ファイルが存在し、権限があることが前提です。

于 2013-02-02T10:59:50.550 に答える
2

exec を試して、この safe_mode = Off のように php.ini ファイルでセーフモードがオフになっていることを確認してください

exec('/usr/bin/pdftotext /opt/lampp/htdocs/foldername/filename.pdf')

また、ターミナルでこのコマンドを実行して、ソフトウェアが機能しているかどうかを確認します

于 2013-02-03T00:38:33.470 に答える
2

PHP system() 関数が許可されているかどうかをテストする方法から? セキュリティ上の理由からオフにされていません

function isAvailable($func) {
    if (ini_get('safe_mode')) return false;
    $disabled = ini_get('disable_functions');
    if ($disabled) {
        $disabled = explode(',', $disabled);
        $disabled = array_map('trim', $disabled);
        return !in_array($func, $disabled);
    }
    return true;
}

isAvailable('shell_exec') 共有ホスティングでこの機能が無効になっているかどうかを確認する必要がある場合があります。

無効になっていない場合は、Apache ログを確認してください。

于 2013-01-25T12:41:42.837 に答える
1

これは通常、多くの Web サーバーで無効にされている機能です。以下を確認できます。

var_dump(ini_get('disable_functions')); // not available if shell_exec disabled
var_dump(ini_get('safe_mode')); // not available if true
于 2013-01-25T12:38:54.893 に答える