Global search - indexace DOC a PDF

Global search - indexace DOC a PDF

autor Tomáš Nosek -
Počet odpovědí: 4

Dobry den, jiz nejakou dobu se snazim rozbehnout indexaci PDF a DOC, nicmene Moodle porad vypisuje:

Error with pdf to text converter command : execution failed for D:\Document Root\moodle/lib/xpdf/win32/pdftotext.exe -eol dos -enc UTF-8 -q "D:\Document Root\moodle\.moodledata/6/CT-_obsluha_pristroje.pdf" -. Check for execution permission on pdf converter executable.

Apache vypisoval v logu: D:\Document neni nazvem vnitrniho ani vnejsiho prikazu, spustitelneho programu nebo davkoveho souboru.

Zkousel jsem cesty opatrit zavorkami (viceslovne nazvy adresaru) i nastavit natvrdo v [moodle_root]/search/documents/physical_pdf.php

$text_converter_cmd="\"D:\\Document Root\\moodle\\lib\\xpdf\\win32\\pdftotext.exe\" -eol dos -enc UTF-8 -q $file -";

Neuspesne, porad stejna chyba

System bezi na Xampp (apache na windows). Apache bezi pod vlastnim uziv. uctem, provadeci prava jsou pridelena, z prikazove radky skripty bez problemu probehnou.

S Doc je to identicke.

Tusite prosim nekdo, kde by mohl byt problem? Dekuji
Počet hodnocení: -
V odpovědi na Tomáš Nosek

Re: Global search - indexace DOC a PDF

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Zkuste ještě Document\ Root (lomítko před mezerou)

--mudrd8mz
V odpovědi na David Mudrák

Xampp, PHP shell_exec a spouštění externích skriptů ve Windows

autor Tomáš Nosek -
Problém je asi malinko někde jinde. Možná nastavení v Xampp. Byť mi PHP externí skripty normálně pouští, v tomto případě mi není schopné pustit pdftotext.exe (práva jsem kontroloval). Jiné skripty ve stejném adresáři pustí bez problému. Nepustí ho ani z dávky. V logu Apache není žádná stopa.

Zajímavé je, že z příkazové řádky (cmd.exe) pdftotext bez problému funguje.

Pokud jste se někdo s podobným problémem setkal, budu rád za jakoukoli radu.
V odpovědi na Tomáš Nosek

Global search - indexace DOC a PDF na systémech s Windows - řešení

autor Tomáš Nosek -
Nefunkční indexace DOC a PDF na systémech s Windows

Pokud cesta ve Windows obsahuje mezery např. "C:\Program Files", musí být zadána v uvozovkách, jinak jí příkazový interpret nerozumí. Problém ovšem nastává, když se v příkazu vyskytnou uvozovky dvoje. Takový příkaz je třeba spustit speciálně:

CMD /k ""c:\batch files\test.cmd" "Parameter 1 with space" "Parameter2 with space""

Moodle s touto eventualitou zřejmě nepočítá, proto jsem si napsal následující funkce do externího souboru _winfix.php - programátoři prominou zubit se:

<?php
function win_path_fix ($path) {
if (stristr($_SERVER [SERVER_SOFTWARE], 'WIN')) {
// Is the server os Win?
$path=str_replace('"','',str_replace ('/','\\',$path));
$pos=strpos($path, '.exe');
if ($pos !== false) {
$command=substr($path,0,$pos+4);
$parameters=substr($path,$pos+4,strlen($path));
$path='"'.trim($command).'"'.$parameters;
}
else {
$path='"'.trim($path).'"';
}
return $path;
}
else {
return $path;
}
}

function command_fix ($command){
if (stristr($_SERVER [SERVER_SOFTWARE], 'WIN')) {
// Is the server os Win?
return 'cmd /k "'.$command.'"';
}
else {
return $command;
}
}
?>

Soubor jsem umístil do "kořenový adresář Moodlu"/search/documents a soubory physical_doc.php a physical_pdf.php upravil následujícím způsobem - původní řádek jsem zakomentoval a nad něj vložil winfix:

------------------------------------------------------------
//physical_doc.php počínaje řákdem 40
//winfix
include_once "./search/document/_winfix.php";
$text_converter_cmd = command_fix(win_path_fix("{$moodleroot}{$command} -m UTF-8.txt")." ". win_path_fix($file));

//$text_converter_cmd = "{$moodleroot}{$command} -m UTF-8.txt $file";
if ($CFG->block_search_word_to_text_env){
------------------------------------------------------------
//physical_pdf.php počínaje řádkem 45
// winfix
include_once "./search/document/_winfix.php";
$text_converter_cmd = command_fix(win_path_fix("{$moodleroot}{$command}")." ". win_path_fix($file)." -");

//$text_converter_cmd = "{$moodleroot}{$command} $file -";
$result = shell_exec($text_converter_cmd);
------------------------------------------------------------