Benim işletim sistemi Windows XP, ve ben IIS 5.1 ve PHP 5.2.9 kullanıyorum. Ben OpenOffice kullanıyorsanız, bir PDF, RTF doc dönüştürmek için benim PHP sayfasından bir PHP komut dosyası çağırmak çalışıyorum. Ben komut satırından doğrudan çağırdığınızda komut gayet güzel çalışıyor, ama benim PHP web sayfasından başlattığı çalışma çok aynı komut alma herhangi bir başarı sahip değilim.
Ben PHP sayfasından komut çağırdığınızda, sayfa sonunda hata gösteren, asılı ve ben soffice.bin ve soffice.exe süreçleri benim IIS kullanıcı adı altında çalışan Görev Yöneticisi görebilirsiniz not ettik.
Bu hatadır:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `com.sun.star.ServiceManager': Server execution failed ' in C:\WEB_ROOT\SoftwareContract\WordToPdf.php:14 Stack trace: #0 C:\WEB_ROOT\SoftwareContract\WordToPdf.php(14): com->com('com.sun.star.Se...') #1 C:\WEB_ROOT\SoftwareContract\Index.php(11): word2pdf('file:///C:/web_...', 'file:///C:/web_...') #2 {main} thrown in C:\WEB_ROOT\SoftwareContract\WordToPdf.php on line 14
Ben bu alanlarda benim IIS kullanıcının izinlerini çift kontrol ettik:
C:\PHP
C:\Program Files\OpenOffice.org 3
C:\Program Files\Java
C:\WEB_ROOT ---- location for my php code
Her durumda, benim IIS kullanıcı bu izinleri vardır: Okuma ve Yürütme, Klasör İçeriğini Okuma. Ve her durumda izinleri dengelemek için kontrol hayır "denys" vardır. Ben de php kodu bulunduğu Web_Root klasör için IIS kullanıcı yazma izinleri verdi.
Bu dönüştürme işlevini çağırır WordToPDF php:
<?php
require_once('WordToPdf.php');
$output_dir = 'C:/web_root/softwarecontract/';
$doc_file = 'C:/web_root/softwarecontract/testdoc.rtf';
$pdf_file = 'output.pdf';
$output_file = $output_dir . $pdf_file;
$doc_file = "file:///" . $doc_file;
$output_file = "file:///" . $output_file;
word2pdf($doc_file,$output_file);
?>
Bu WordToPdf.php olduğu:
<?php
set_time_limit(0);
function MakePropertyValue($name,$value,$osm)
{
$oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$oStruct->Name = $name;
$oStruct->Value = $value;
return $oStruct;
}
function word2pdf($doc_url, $output_url)
{
//Invoke the OpenOffice.org service manager
$osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
//Set the application to remain hidden to avoid flashing the document onscreen
$args = array(MakePropertyValue("Hidden",true,$osm));
//Launch the desktop
$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
//Load the .doc file, and pass in the "Hidden" property from above
$oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
//Set up the arguments for the PDF output
$export_args = array(MakePropertyValue("FilterName","writer_pdf_Export",$osm));
//Write out the PDF
$oWriterDoc->storeToURL($output_url,$export_args);
$oWriterDoc->close(true);
}
?>
Are there any problems with my permissions, or any additional areas where I need to check permissions for the IIS user? Does anyone have an idea why IIS failed to create the COM object, if not a permissions issue?
Teşekkürler!