2015-02-04 7 views
1

PHP 작업을 계속하고 더 많은 코드를 수행 할 수 있도록 파일 읽기 테스트를 위해 PHP에서 파이썬 스크립트를 실행하려고합니다. 작은 txt 파일과 PHP 파일로 시도했지만 파이썬 스크립트의 출력은 빈 문자열입니다. 모든 파일은 동일한 디렉토리에 있으며 VISTA OS에서 XAMPP를 사용하고 있습니다.PHP에서 실행 파이썬 스크립트

PHP 파일

<?php 

$validation= exec('python script.py juliodantas.txt') ; 
echo $validation ; 

var_dump($validation); 

?> 

파이썬 파일 : (script.py)

#!C:\Python27\python.exe 
print "Content-Type: text/html\n" 

import sys 
fich_input= sys.argv[1] 

def test(fich): 
    input_fil=open(fich,'r') 
    s='' 
    cont=0 
    for line in input_fil: 
     cont+=1 
     s+=line 
    return (line,cont) 

test(fich_input) 

txt 파일입니다 탭 형식의 파일 (juliodantas.txt)

CAS 미소 InchI Mol_name LAB 기관 종 Cell_type 세포 하부 Bio_target 조건 Asay_parameter 관측 Assay_ID strain 조직 target_type 값 단일 비교 Experimental_error
12233 (535) 2435d 3r5rg 4t4t 4t 4t34t4 4t4t4 4trgdf vgery4 345y4 grfbg gergh hj6yu WDE kukl derj, .I gjyy htht5u thyt5 tht56

PHP의 출력 thtrj4yeg :

string(0) "" 

답변

1

은 내가 manual for exec()을 인용 할 수있는 경우 :

The last line from the result of the command.

파이썬 프로그램 출력합니다 "Content-Type: text/html\n", 그래서 그 출력의 마지막 줄은 빈 줄입니다.

당신이 변수 내부 프로그램의 전체 출력을 원하는 경우, exec의 두 번째, 선택적 매개 변수를 사용

$validation = ""; 
exec('python script.py juliodantas.txt', $validation); 

echo impode("\n", $validation); // should print "Content-Type: text/html\n" 

업데이트 : 이전에 사용되지 않는 사용했습니다

(그리고 명백하게, 지금 제거 된) call-with-by-reference 구문을 사용합니다. 부끄러운 줄 알아. 또한, 분명히 exec() 출력을 줄 기반 배열로 반환합니다, 그래서 당신이 그것을 하나의 문자열로 가지고 싶어 합류해야합니다.

+0

passthru로 변경되었으므로 이제 출력은 다음과 같습니다. NULL –

+0

더 많은 내용이 인쇄되지 않습니다. – tripleee

+0

이유를 이해할 수 없습니다 :/ –