2013-11-04 2 views
0

사용자가 등록 할 수 있고 PHP가 스크립트를 호출하고 변수를 보낼 수 있도록 사용자 등록 페이지를 만들고 싶기 때문에 PHP에서 스크립트로 변수를 가져 오는 방법을 알아 내려고합니다.PHP 스크립트에서 어떻게 PHP 변수를 얻을 수 있습니까?

특히 내가 (그것 PHP 페이지)에 문제가이 라인 :

PHP : $ 결과 = bash /home/*******/public_html/add_user $login '$pwd';

add_user.sh : 마음에

#!/bin/bash 
adduser -u "$1" -p "$2" -g users -s /bin/bash 
+0

[shell_exec()] (http://php.net/manual/en/function.shell-exec.php)를 확인 했습니까? – Telshin

답변

1

exec

$results = exec("bash /home/*******/public_html/add_user $login '$pwd'"); 

을 유지하는 것이이 프로세스를 실행하는 사용자 (웹 사용자, 아마 www가 데이터, www, 웹 등)해야 이렇게하려면 sudo 또는 상승 된 액세스 권한이 있어야합니다. 또한 웹에이 문제를 공개 할 때 모든 영향과 결과를 고려해야 할 시간을 정말로 갖지 않는 한이 작업을 수행하는 것에 대해주의를 기울이고 싶습니다.

0

당신은 당신의 PHP 스크립트에서 변수를 에코와 같은 쉘 변수로 이것을 읽을 수 있습니다 : 당신이 정말로 PHP에서 외부 프로그램을 호출하려면

read -r user pass < <(/path/to/php/script.php) 
1

, 당신이해야 할 system() 또는 exec() 같은 전화를 사용할 수 있습니다 그. PHP 변수에서 PHP로 명령 줄을 구성해야합니다.

이러한 접근 방식은 웹 응용 프로그램의 보안 구멍의 가장 일반적인 소스 중 하나입니다. 전달하고자하는 데이터가 유효하고 올바른지 확인하여 방해가 될 것입니다 ($login"; rm -rf /"이 포함될 경우 어떤 일이 생길지 생각하십시오).

또 다른 고려 사항은 adduser에 수퍼 유저 권한이 필요하다는 것입니다. 지난번에 내가봤을 때, 쉘 스크립트는 SUID를 존중하지 않았기 때문에 직접 접근 방식이 효과가 있을지 모르겠다. sudo을 사용하거나 Perl로 스크립트를 다시 작성하고 suidperl을 사용해야 할 수도있다.

관련 문제