php 에서 shell_exec 실행후 값을 가져오려는데 잘 안되네요

pci486의 이미지

일단 php.ini 에 safe 모드는 off 로 되어있습니다.
그리고 버젼은 5.3 입니다.

일단 지금 사용자가 업로드 하는 문서에 문자추출을 해야되는 일이 생겨서
오픈소스 쪽으로 알아보니 antiword, xpdf 이외에는 없는것 같더군요.

그래서 자바 네이티브로 문서 추출하는 프로그램을 만들었습니다.
그리고 서버에 자바 설치후 리눅스 콘솔창에서 자바 명령을 실행하니 정상적으로 문서의 내용이 파싱되어
리눅스 콘솔창으로 뜨는것을 확인했습니다.

문제는 이 다음부터 발생하였습니다.

다름이 아니라 php 에서 shell_exec 로 커멘드 라인과 동일하게 명령을 주니 반환값이 안나옵니다..( pwd 같은 명령은 나옵니다..)
혹시나 싶어서
#!/bin/bash

str=`java ExecuteText $1`

echo $str

이런 쉘을 작성하여 ./java.sh 파일파스 이래 주어도 안나옵니다..
이거 어떻게 해결하면 될까요..

클라쪽 요청이라
반드시 되어야되는 기능이기에 머리짜매다가
질문 올려봅니다.

혹시나 해결하신분 계시면 조언좀 해주시길 바랍니다.

참고로 해당 자바 클래스들은 전부 root에 755 로 설정되어 있습니다.

goforit의 이미지

기억이 잘 안나지만, PHP 에서 직접 쉡 스크립트 호출하는 것은 security 설정과 연관이 되었던 기억이 납니다.
그래서 저는 system (나중에 exec) 로 바꾸었습니다.

shell_exec 대신에 system 이나 exec 를 써 보세요.
예를 들면,

function callCmdLine($data, $imgFile, $dirname, $filename_prefix) {
    global $sdeditJar, $QSDEImagetype;
 
    // create temporary uml text file
    $umlFile = $dirname."/".$filename_prefix.".sml";
    $fp = fopen($umlFile,"w+");
    $w = fputs($fp,$data);
    fclose($fp);
 
    // Lauch PlantUML
    if ($QSDEImagetype == 'png') {
        $typestr = ' -t png';
    } else {
        die (-1);
    }
 
    $command = "java -jar ". $sdeditJar. "{$typestr}". ' '.  '-o'. "\"{$imgFile}\"". ' '. "\"{$umlFile}\"";
 
    /** Debugging
     * $status_code = system($command);
     */
 
    $status_code = exec($command);
    /* let us use system command to display error */
 
    // Delete temporary uml text file
    unlink($umlFile);
 
    // Only return existing path names.
    if (is_file($imgFile)) {
        return $imgFile;
    } else {
        return false;
   }
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.