execle( )함수로 php스크립트 실행할때 질문입니다.
글쓴이: kimyh / 작성시간: 토, 2006/11/18 - 12:35오전
확장자가 php인 스크립트(memconfirm.php)를 만들어 아래와 같이 execle( )함수를 이용하여 실행할때
퍼미션을 777로 주었는데도 퍼미션 에러가 계속 납니다.
콘솔에서 아래와 같이 실행할때에는 잘 실행이 되거든요.
execle( )함수 사용부분에서 뭐가 잘못된건가요?
memconfirm.php파일은 실제로 /usr/local/php/bin 디렉토리에 있지않고 실행파일 test가
있는곳(/home/test)에 있어서 그런가요?
콘솔에서 실행시;
[root@joballin cldownload]# /usr/local/php/bin/php memconfirm.php
아이디 = aaaa
비밀번호 = bbbb
이 름 = 홍길동
실행결과;
[root@joballin cldownload]# ./test //시험용 실행파일
execle: Permission denied
test.c의 execle( )함수 사용부분;
if(execle("/usr/local/php/bin", "php memconfirm.php", "argv 1", "argv 2", NULL) < 0);
{
perror("execle");
exit(1);
}
각 파일들의 퍼미션;
위치; /home/test
-rwxrwxrwx 1 root root 165 Nov 16 23:13 dbconf.php
-rwxrwxrwx 1 root root 1539 Nov 17 05:59 memconfirm.php
-rwxr-xr-x 1 root root 16025 Nov 17 14:35 test
-rw-r--r-- 1 root root 6058 Nov 17 14:35 test.cForums:


execle("/usr/local/php/bin",
execle("/usr/local/php/bin", "php", "memconfirm.php", "argv 1", "argv 2", NULL)
이런식이어야 할것 같네요.
emerge money

https://xenosi.de/
밤이 꽤 깊었는데도 답변 주신데 감사드립니다.
알려 주신대로 해도 같은 결과군요.
if(execle("/usr/local/php/bin", "php", "memconfirm.php", "argv 1", "argv 2", NULL) < 0); { perror("execle"); exit(1); } 에서 execle( ) 함수대신 execl( ) 함수를 사용해도 같은 결과가 나옵니다. 그런데 이상한것은 php, memconfirm.php 값이 먹혀들어 가지를 않은것 같습니다. 어떠한 값이 들어가도 매번 같은 결과가 나오거든요. 엠파스, 네이버, kldp, 구글 모두 밤 새가며 검색을 해봐도 도저히 답을 찾지 못하겠군요. 정말 머리에 쥐가 날 정도 입니다.=============================================
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
두가지 방법
if(execle("/usr/local/php/bin/php", "memconfirm.php", "argv 1", "argv 2", NULL) 0);
{
perror("execle");
exit(1);
}
또는
memconfirm.php 파일의 맨 윗줄에 #!/usr/local/php/bin/php 라는 라인 넣어주셔도 되구요.
그리고 memconfirm.php 파일에 chmod +x ./memconfirm.php 로 실행권한 해주시고
그 담엔 그냥
if(execle( "memconfirm.php","", "argv 1", "argv 2", NULL) 0);
{
perror("execle");
exit(1);
}
근데 arg들을 꼭 써야 하나요. execl 함수들은 제가 잘 몰라서 인자들 모르겠네요..
첫번째 인자가 실행파일명 맞지요?
/usr/local/php/bin/ 는 그냥 디렉토리일뿐이구..파일은 아닙니다.
암튼 실행파일을 "/usr/local/php/bin/php" 로 해주시던가..
memconfirm.php 파일을 에딧하고 실행권한줘거 바로 실행시키던가 하시면 될 겁니다.
제가 테스트해보고 알려드리면 좋겠지만, 현재 테스트 환경이 아니네요.^^;;
P.S : popen 쓰면 좋을 거 같은데..fgets로 결과값 받아오기도 편하구..
댓글 달기