일반계정의 CGI 실행문제.. 몇주째야 이거.. ㅠ.ㅜ

cotnals의 이미지

안녕하세요.
에겅.. 이문제 때문에 몇주일 씨름하고 있습니다. ㅠ.ㅜ
검색을 하면 나올것도 같은데.. 왜 이렇게 찾기가 힘든지.. ㅜ.ㅜ

제 문제는 이렇습니다.
처음에 유저를 생성하구요.
아파치에서 그 유저의 폴더에서 cgi 를 실행하려 합니다.
public_html 디렉토리 설정에
Option ExecCGI 도 주고

----------------------
<Directory "/home/*/public_html">
Options ExecCGI

AllowOverride None
Allow from from all


Order allow,deny
</Directory>
----------------------

addhandler CGI-Script .cgi 요거 주석도 제거하고..
그런데 나오는것은 500 internal server error 뿐..
재밌는것은 /var/www/cgi-bin/ 에서는 잘 실행이 됩니다.
더 재밌는것은..
httpd.conf 에 보면 /var/www/cgi-bin 디렉토리 설정이
있더라구요.

----------------------
<Directory "/var/www/cgi-bin">
Options ExecCGI

AllowOverride None
Allow from from all


Order allow,deny
</Directory>
----------------------

이 부분을 모두 주석처리 했는데도
cgi-bin 에선 cgi 가 잘돌아 갑니다.
도데체 왜 유저 디렉토리에선 cgi 가 안돌아가는 걸까요?
뭔가 다른 설정이 있나요?

제 httpd.conf 파일 올립니다.

httpd.conf < 클릭![/url]

jstrane의 이미지

500 internal error 는 대부분 소스의 문제입니다.

cgi 소스중에 디렉토리 들어간 부분을 잘 살펴보세요.

절대경로 같은 것이 /cgi-bin 로 되어 있을것 같네요.

그리고 에러 로그 파일을 참조하시거나 스크립트 구문

테스트를 한번 해보시구요.

아니면 httpd.conf의

scriptalias /cgi-bin/ "/var/www/cgi-bin/"

이 부분을 주석처리하고 개인 디렉에 /cgi-bin/ 디렉

을 만들고 거기 넣어서 테스트 해보세요.

도움이 되었으면 좋겠군요.

cotnals의 이미지

안녕하세요~
제가 사용한 CGI 소스는 ..
그 기초적인거 있잖아요~
Hello World 나오는.. 아주 기초적인거요..
말씀주신대로 해봤는데..
역시나 인터널 에러가 납니다.
사용자 설정에 뭔가 문제가 있나본데..
기본디렉토리인 /var/www/cgi-bin/ 에서는
잘 실행이 되는데..
왜 유저디렉토리인 /home/*/public_html 에서는 실행이 안될까요 ㅠㅠ
설정도 문제가 없는거 같은데..

cotnals의 이미지

아무래도 suEXEC 문제인거 같습니다.
suEXEC.log 를 살펴보니깐

[2004-02-08 01:42:40]: uid: (500/gutmart) gid: (500/500) cmd: index.cgi
[2004-02-08 01:42:40]: target uid/gid (500/500) mismatch with directory (0/0) or program (0/0)

이런 로그가 뜨네요.
검색을 해보니까

Quote:
CGI파일의 owner, group과
public_html디렉토리의 owner, group을 바꿔 주셔야 합니다.

입력한 URL이
http://domainname/~<userid>
라면 <userid>의 owner, initial group으로 바꿔 보십시오.

라고 하셨는데.. httpd.conf 에서 바꾸는 건가요?
owner , group 을 바꾸는 방법좀 가르쳐 주세요

choissi의 이미지

이럴 경우에 디버깅 하는 요령은
아파치를 싱글모드로 띄운 다음
gdb나 strace ltrace를 걸어 보는 방법이 좋습니다.

httpd -X 옵션을 두면 아파치가 하나만 실행 됩니다.
그리고 나서 ps -ef | grep httpd를 해서 pid를 얻은 다음 디버거나 트레이스를 걸어 줍니다. 그러고 나서
문제가 있는 cgi를 실행을 하면 트레이스가 떠 질것입니다.

지금의 경우엔 suEXEC란게 문제란 것을 아셨으니 해결을 보면 되겠지만요..

http://www.ezdoum.com/write.php?rid=02/08/17/6349113&where=stories.php?story=02/08/17/3254153&cmode=&comment_sort=asc&p=1

저는 이런식으로 디버깅 해 봅니다.

아래의 글도 도움이 되겠군요.
디버깅 이야기: strace, truss, tusc
http://bbs.kldp.org/viewtopic.php?t=1045&highlight=truss

그럼 원하시는 바를 얻으시길

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

cotnals의 이미지

답변 감사합니다.
제가 디버깅이란것도 해야 하는건가요?
아직 내공이 부족하여 성심껏 써주신 글이 무슨말인지 하나도 모르겠다는 ㅠㅠ
디버깅이란것도 공부해야겠군요!

유저계정에서 CGI 돌리기가 이렇게 어려운것인지는 정말 몰랐네요 ㅜㅜ

winix의 이미지

content-type 에 문제가 있을 수도 있네요..

소스에서 문자를 출력하기 전에 다음을 먼저 출력한 후 출력해 보세요..

print "Content-type: text/html\n\n";

뒤에 \n 은 반드시 2번 들어가야 합니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.