2015-12-14 19 views
5

.odf dosyasının ihracını .pdf'a otomatik hale getirmek istiyorum.PHP exec hatasız olarak hata veriyor

unoconv adlı bir şeyi denedim.

Windows komut satırına yazıldığında, her şey doğru.

>"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt 

Bir PHP betiğinde kullanıldığında, artık hiçbir şey işe yaramıyor. Hata yok.

exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt'); 

//or 

shell_exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe" "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf path/to/myfile.odt') 

Ben de \ ya da farklı ' ve " kullanarak kaçmaya çalıştı ama benim testlerin hiçbiri kesin idi.

$test = exec($cmd, $output, $return); 
echo var_dump($test); 
echo var_dump($output); 
echo var_dump($return); 

bana Bu izin sorunu gibi geliyor

//echo var_dump($test)give nothing 

//echo var_dump($ouput); 
array (size=0) 
    empty 

//echo var_dump($return); 
int 1 

ver ama bir de bu kontrol ve tüm klasörleri PHP erişilebilir.

+0

Alıntıladığınız karakter çözmek zorundayım ve sözdizimi hakkını almak için kaçan ilk çok basit bir komut ile deneyin yapmak zorundayız. – arkascha

cevap

0

Ben IIS bir WAMP sunucusundan değiştirirken

ben bu sorunu vardı ... yerine ancak yeterli temsilcisi bir yorum olarak eklersiniz ve söylediğiniz gibi bir izin sorunu oldu. "IUSR" kullanıcısı ve yürütmek için "IIS_IUSRS" grubunun tam izinlerini vermem gerekiyordu.

Daha sonra benzer bir şeyle karşılaştım ve yalnızca IIS'nin Yönetici olarak çalıştırdığı kullanıcıyı değiştirmeye karar verdiğime inanıyorum, ancak bu muhtemelen önerilmez.

Elbette, IIS kullanmıyorsanız bu konuyla alakasız olacaktır, ancak bunu başka birinin olması durumunda buradan bırakacağım.

+0

Birisi için yararlı olabilir ama aslında ben IIS – Raccoon

+0

kullanmayın Sunucu kurulumunuz nedir? Ben WAMP düşünüyorum benzer bir şey vardı ve bu yardımcı olursa wampapache hizmetini Yönetici olarak çalıştırmak için değiştirdim –

0

Egzotik kodun test edilmesiyle, python.exe'nin üzerine yazılmıştır ve kullanılamaz. İlk gönderideki kod neredeyse doğruydu. Benim hatam. Meraklı kişiler için

, bu

function createPDF($from, $to) 
{ 
    //Launch the .bat, do not forget the double backslash 
    $handle = popen("start /B path\\to\\createPDF.bat ".$from." ".$to, "r"); 

    //Debug if needed 
    //echo "'$handle'; " . gettype($handle) . "\n"; 
    //$read = fread($handle, 2096); 
    //echo $read; 

    //Close the socket 
    pclose($handle); 
} 
createPDF.php bir kolay kullanım fonksiyonu

createPDF.bat

@echo off 
set arg1=%1 
set arg2=%2 

cd "C:\Program Files (x86)\OpenOffice 4\program\" 

python.exe "C:\Program Files (x86)\OpenOffice 4\program\unoconv-master\unoconv" -f pdf -o %arg2% %arg1% 

ile benim son koddur

Ve şimdi bir odt dosyasını pdf'ye dönüştürmem gerektiğinde st

aşağıdaki test.php

include_once($_SERVER['DOCUMENT_ROOT']."path\to\createPDF.php"); 

//createPDF(source, destination), do not forget the double backslash (\\) 
createPDF("E:\\A\\strange\\path\\to\\Report.odt" , "D:\\Final_report");