2015-01-02 3 views
0

PHP에서 python을 실행하고 싶습니다. 기본 파이썬 인터프리터에서 잘 작동하는 스크립트가 있습니다. 나는/usr/bin/python과 /usr/local/bin/python2.7에 설치된 python 2.7.3에 설치된 기본 파이썬 2.6.6과 함께 centos를 가지고있다. 기본 파이썬 버전은 무엇입니까?PHP에서 Python 실행 - Python 버전 선택 (Linux-CentOS)

[[email protected] ~]# python -V 
Python 2.6.6 

[[email protected] ~]# python2.7 -V 
Python 2.7.3 

이제 PHP로 간단한 파이썬 스크립트를 호출하고 싶습니다. 파이썬 2.7.3에서 실행되고 파이썬 2.6.6에서는 실행되지 않아야합니다. 하지만 파이썬의 기본 버전으로 만 관리했습니다.

PHP (test.php) :

<?php 
ini_set('display_errors', 'on'); 
$output = array(); 
$dir = dirname(__FILE__); 
$command = "/usr/bin/python ". $dir . "/test.py"; 
$command1 = "/usr/local/lib/python2.7/ ". $dir . "/test.py"; 
$output = null; 
exec($command, $output); 
var_dump($output); 
?> 

파이썬 (test.py) :

#!/usr/bin/env/python2.7 
import sys 
print(sys.version) 

OUTPUT (한 번 내가 브라우저에서 test.php를 실행) :

array(2) { [0]=> string(41) "2.6.6 (r266:84292, Jan 22 2014, 09:42:36)" [1]=> 
string(38) "[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]" } 

그래서 내가 사용하는 경우 :

exec($command, $output); 

모든 것이 괜찮 그리고 내가 함께 test.php 실행할 때 (2.6.6)

그러나 파이썬의 올바른 버전을 보여줍니다

exec($command1, $output); 

I 다음 결과를 얻으십시오 (결과 없음) :

array(0) { } 

따라서 결과는 없으므로 전자 파이썬은 모든 설치 명령 줄에서 2.7.3

2.7.3을 사용할 수에보고 - 예를 들면 :

[[email protected] ~]# python2.7 
Python 2.7.3 (default, Jan 2 2015, 00:56:13) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print "it works" 
it works 

그래서 내가이 문제를 어떻게 해결합니까?

편집 :

The result of whereis -b python :python: 

/usr/bin/python /usr/bin/python2.6 /usr/lib/python2.6 /usr/lib64/python2.6 
/usr/local/bin/python2.7-config /usr/local/bin/python2.7 /usr/local/lib/python2.7 
/usr/include/python2.6 
+0

그것은 항목을 조사하는 것이 더 멀티 플랫폼이 될 수 있습니다 실행 비트가 파이썬 파일에 설정이 기억 다음과 같이 파이썬 스크립트를 실행해야한다 올바른 버전을위한'whereis -b python' (어떤 추론을 필요로 할 수도 있음)에서. 물론, 스크립트는 모든 최신 버전 (2.7 + 3.2 이상)과 호환 될 수 있습니다. – mario

+0

whereis -b 파이썬의 결과 : 파이썬 :/usr/bin/python /usr/bin/python2.6 /usr/lib/python2.6 /usr/lib64/python2.6/usr/local/bin/python2. 7-config /usr/local/bin/python2.7 /usr/local/lib/python2.7/usr/include/python2.6 – Brana

답변

1
  1. 당신의 test.py 파일에 오류가 있습니다. 단말기에 파일을 실행하면 다음과 같은 결과를 보여준다 envpython2.7 사이

    #!/usr/bin/env python2.7 
    

    참고 공간 :

    bash: ./test.py: /usr/bin/env/python2.7: bad interpreter: Not a directory 
    

    는이 문제를 해결하기 위해, 상기 제 라인 세트.

  2. 스크립트 자체를 실행하는 대신 /usr/bin/python을 실행하여 파일에 설정된 Python 인터프리터를 무시합니다.

    ini_set('display_errors', 'on'); 
    $output = array(); 
    $command = dirname(__FILE__) . "/test.py"; 
    exec($command, $output); 
    var_dump($output); 
    

    참고 :

    chmod +x test.py 
    
+0

나는 이것을 추가했지만 여전히 오류가 발생합니다. 실제로 #!/usr/bin/env 줄은 중요하지 않습니다. – Brana

+0

PHP에서 파일을 호출 했습니까? – Brana

+0

나는 PHP 스크립트를 시도했지만 작동하지 않는다고 판명했다. 내가 아는 한 기본 스크립트를 호출하지만 어쨌든 작동하지 않습니다. 나는 centos를 사용하고 있습니다. – Brana