3

PDFファイルを開くのに問題があります。

(私はApache2で動作するmod_wsgiの下でLadonとPythonを使用しています。したがって、ubuntu Apacheサーバーシステムで-Windowsシステムに切り替えました)

次の Python スクリプトを実行しようとしています。

(ここで、str_pdf_file_name = '/var/www/Accounting_Engine/pdfDocuments/File_name.pdf')

def preview_pdf(self,str_pdf_file_name):
    try:
                if sys.version_info[:2] > (2,3):
                    import subprocess
                    from subprocess import Popen, PIPE
                    k = subprocess.Popen(['evince', str_pdf_file_name],stdout=PIPE)
                    print k.communicate()
                else:
                    os.spawnlp(os.P_NOWAIT, 'evince', 'evince', str_pdf_file_name)
    except Exception,msg:
        return str(msg)
    return str_pdf_file_name

apache2.conf ファイルの stdin と stdout の制限を無効にしました。

WSGIRestrictStdin Off    
WSGIRestrictStdout Off

そして今、error.log ファイルは ( /var/log/apache2/error.log) を示しています:

Cannot parse arguments: Cannot open display: [Wed Oct 10 11:50:24 2012] [error] ('', None)

os.environ もチェックしました。次のように表示されます。

{'LANG': 'C', 'APACHE_RUN_USER': 'www-data', 'APACHE_PID_FILE': '/var/run/apache2.pid', 'PWD': '/home/user', 'APACHE_RUN_GROUP': 'www-data', 'PATH': '/usr/local/bin:/usr/bin:/bin'}

また、次のコードを使用して PWD を変更してみました。

import pwd
os.environ["PWD"] = pwd.getpwuid(os.getuid()).pw_dir    # Because PWD of 'www-data' was '/var/www'
k = subprocess.Popen(['evince', str_pdf_file_name],env=os.environ,stdout=PIPE)

しかし、それらは出力に変化はありません。それはまだ示しています

'Cannot parse arguments: Cannot open display:'

何が原因で、これを解決する方法について何か提案はありますか?

4

3 に答える 3

2

次のリンクは、同じ問題を抱えている人に役立つ可能性があります。

http://ladonize.org/index.php/Ladon_Attachments

上記のリンクのダウンロードfunction()が役立ちます。

于 2012-10-10T11:48:07.613 に答える
2

evince明らかにGUIを持つツールです。通常、デスクトップ/ユーザーと対話できないサーバープロセス内から開こうとします。Linux では、X サーバーを実行する必要がある可能性がありますが、サーバーではそうではない可能性があります。そして、それはまさにエラーメッセージがあなたに伝えていることです. 解決策を再考する必要があると思います。

アップデート:

明らかではないため、受け入れられた回答を探してコメントを読まない場合:元の投稿者は、ここでdownload説明する方法を使用して問題を解決しました

于 2012-10-10T08:29:12.857 に答える