2011-10-19 3 views
1

쉘 스크립트를 호출하는 php 스크립트가 있습니다. 쉘 스크립트는 SQL 명령을 실행하고 출력은 쉘 변수로 전송됩니다. 이제이 변수를 PHP 스크립트에 어떻게 전달합니까?sqlplus에서 unix로 변수를 넘긴 다음 PHP로 넘김

예 : PHP 코드 :

$_param1 = "JOHNDOE"; 
$out = exec("sh shellscript.ksh $_param1"); 
echo $out; 

쉘 스크립트 :

#!/bin/sh -u 

param=$1; 

out=`sqlplus -s $connectStr <<EOF 

set serveroutput off; 
set feedback off; 
set heading off; 
set pagesize 0; 
set verify off; 
set echo off; 

select field from sometable where condition ='$param'; 
exit; 
EOF` 

echo $out; 

나는 PHP 페이지 밖으로 $를 전송해야합니다. 파일을 만드는 것 이외의 다른 방법이 있습니까?

답변

0

'exec'의 매개 변수로 $ out을 전달하면 셸의 반환 값이 해당 var에 저장됩니다.

myshell.sh

#!/bin/bash 
echo $1 

myphp.php

<?php 
$param = "HEY, this is Output"; 
exec("sh myshell.sh \"${param}\"", $out); 
print_r($out); 
?> 

그런 다음 PHP 스크립트 어쩌면

$ php myphp.php 
Array 
(
    [0] => HEY, this is Output 
) 

당신이 실행에 일부 권한 문제가 발생 될 수에게 전화 그 셸 또는 심지어 PHP 구성이 잘못되었을 수 있습니다.

+0

나는 그것을 시도했습니다. 나는 system() 함수로 그것을 시도했다. 그러나 이제까지 PHP 변수에 출력을 채우는 것으로 보이는 것은 없습니다. 유닉스 프롬프트에서 쉘 스크립트를 별도로 실행하면 필요한 출력이 쉘에서 생성됩니다. 어떤 아이디어? –

+0

내 업데이트를 확인하십시오. 권한 문제가 있다고 생각합니다. 웹 서버 사용자와 스크립트를 호출하여 결과를 확인하십시오. – 0xd

+0

나는 여기서 문제는 PHP가 echo'ed 데이터 즉, 단지 값을 선택하지 않는다는 점이다. 그냥 공백 배열 Array()를 보여줍니다. 예를 들면 : "Hello World"를 에코 할 때 데이터를 집계하여 출력합니다. 그러나이 가치를 위해, 그것은 다소 이상하게 행동합니다. –