2016-10-22 2 views
-1

내 mac xampp에서이 phpscript를 실행할 때 성공했지만 PDF 파일은 반환되지 않습니다. 하지만 맥 터미널에서 실행하면 docx 파일에서 pdf 파일을 만들 수 있습니다.Unoconv가 PHP 스크립트에서 PDF 파일을 생성하지 않습니다.

<?php 
    $source_file = 'c++ documentation.docx'; 
    $cmd = "unoconv/0.7/bin/unoconv"; 
    $command = sprintf("/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 
    echo shell_exec($command); 

    echo "yoyo"; 

    if(shell_exec($command)){ 
     echo "successful"; 
    }else{ 
     echo "failed"; 
    } 
?> 

이것은 내 편집 된 코드이며 sprintf() : 너무 적은 인수입니다!

This is the part where it give this message but it said successful and not pdf files were found

+0

그래서 스크립트는 CLI에서 실행하면 성공하고 웹 서버를 통해 요청하면 실패합니다. –

+0

그래도 터미널 CLI에서는 성공했지만 xampp 웹 서버에서는 실패했습니다 – user3711175

+0

어딘가에서 명령을 인쇄 한 다음 CLI에서 실행하려고 시도했습니다 –

답변

0

당신은 다른 쉘은 특수 문자를 해석 할 수 있습니다, 쉘 인수를 탈출해야합니다 : 그것은에서 사용할 수없는 보인다

$source_file = 'c++ documentation.docx'; 
$command = sprintf("unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 

, 당신의 unoconv/0.7/bin/unoconv 실행에 전체 (절대) 경로를 제공하여 $PATH 환경 변수 :

$command = sprintf("/path/to/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1", 
    escapeshellarg($source_file)); 

또는 abs olute 경로를 unoconv/0.7/bin/ 디렉토리로 바꾸고 쉘을 호출하기 전에 $PATH 환경 변수에 넣습니다. 예를 들어, this 게시물을 참조하십시오.

분명히 $source_file은 현재 디렉토리에 있어야합니다. 그렇지 않으면 명령이 액세스하지 못합니다.

+0

음 어떻게 그럴 수 있습니까? 그것은 터미널이라고 불리고 그것을 넣었습니까? – user3711175

+0

/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv 이 말은 실제 경로입니까? – user3711175

+0

unoconv [options] file [file2 ..] LibreOffice unoconv 옵션에서 지원하는 모든 형식으로 변환 : -c, --connection = string 사용자 정의 연결 문자열 사용 -d, --doctype = type 문서 유형 (문서, 그래픽, 프리젠 테이션, 스프레드 시트)을 지정합니다. -e, --export = name = value 내보내기 필터 옵션을 설정합니다. -e PageRange = 1-2 -f, --format = format 출력 형식을 지정합니다. -F, --field = name = value 사용자 정의 텍스트 필드를 값으로 대체합니다. eg. -F Client_Name = "Oracle"-i, --import = string 가져 오기 필터 옵션 문자열을 설정합니다. -i utf8 -l하지만 성공했다. – user3711175

관련 문제