投稿日:2003年02月24日 作成鷹の巣

No.8644 Redhat8.0導入でCGI動作時に別のディレクトリでは、ファイル保存になってしまう。



Redhat8.0導入でCGI動作時に別のディレクトリでは、ファイル保存になってしまう。

No.8644 投稿時間:2003年02月24日(Mon) 20:30 投稿者名:困り者 URL:

お世話になっております。

Redhat8.0を導入して、http.confを設定した後起動してみると

*** http.confの一部を抜粋 ***
<Directory /home/*/public_html/>
AllowOverride None
Options Includes ExecCGI Indexes
Order allow,deny
Allow from all
</Directory>
***

~username/test.cgi は動作して、~username/cgitest/test.cgi はファイル保存ダイアログが
出てしまい、実行されません。

ちなみに設定を

*** http.confの一部を抜粋 ***
<Directory /home/*/public_html/cgitest/>
AllowOverride None
Options Includes ExecCGI Indexes
Order allow,deny
Allow from all
</Directory>
***

に変えると、
~username/test.cgi は動作せず、~username/cgitest/test.cgi は前回と同じダウンロードのダイアログ
になってしまいます。
この時のerror_logは「Options ExecCGI is off in this directory: /home/username/public_html/test.cgi」
で、ちゃんと動作してるっぽいです。

尚、~username/cgitest/.htaccess を入れてみても効果は無く・・・。

エラーならログで分かるのですが、cgiをファイル保存してしまう場合はどこら辺の設定がミスっている
のでしょうか。
宜しくお願いいたします。


CGI定義は

No.8647 投稿時間:2003年02月24日(Mon) 20:56 投稿者名:OAK URL:

> *** http.confの一部を抜粋 ***
> <Directory /home/*/public_html/cgitest/>
> AllowOverride None
> Options Includes ExecCGI Indexes
> Order allow,deny
> Allow from all
> </Directory>

CGIは .cgi であると言う命令は入っていますか?
AddHandler cgi-script cgi
とか..


現在のAddHandlerの内容。

No.8648 投稿時間:2003年02月24日(Mon) 21:18 投稿者名:困り者 URL:

Resありがとうございます。

> CGIは .cgi であると言う命令は入っていますか?
> AddHandler cgi-script cgi

はい。<Direcotry>とは別の所でコメントアウトされていた行の
コメントアウトを外しました。現在は

AddHandler cgi-script .cgi .pl
AddHandler server-parsed .shtml

になっております。


使用しているhttp.conf

No.8649 投稿時間:2003年02月24日(Mon) 21:29 投稿者名:困り者 URL:


長文失礼致します。

使用している http.conf のコメントをカットした物になります。
色々弄り回しているのですが、上手く動かない・・。
/etc/mime.type かな、と思ってみたりしてますが、きっと違う気がします(とほほ)

すみませんが、宜しくお願いいたします。

***
ServerTokens OS

ServerRoot "/etc/httpd"

PidFile run/httpd.pid

Timeout 300

KeepAlive Off

MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
</IfModule>

Listen 80

Include conf.d/*.conf

LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
LoadModule auth_dbm_module modules/mod_auth_dbm.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imap_module modules/mod_imap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

#ExtendedStatus On

User apache
Group apache

ServerAdmin root@localhost

ServerName localhost:80

UseCanonicalName Off

DocumentRoot "/var/www/html"

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory "/var/www/html">
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<LocationMatch "^/$>
Options -Indexes
ErrorDocument 403 /error/noindex.html
</LocationMatch>

<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
# UserDir disable

#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disable" line above, and uncomment
# the following line instead:
#
UserDir public_html

</IfModule>

<Directory /home/*/public_html/>
AllowOverride None
Options Includes ExecCGI Indexes
Order allow,deny
Allow from all
</Directory>

DirectoryIndex index.html index.htm index.shtml index.cgi

AccessFileName .htaccess

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off

ErrorLog logs/error_log

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog logs/access_log combined

#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent

#CustomLog logs/access_log combined

ServerSignature Off

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Alias /manual "/var/www/manual"

<Directory "/var/www/manual">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
#Scriptsock logs/cgisock
</IfModule>

#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>

IndexOptions FancyIndexing VersionSort NameWidth=*

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage kr .kr
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr

LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

ForceLanguagePriority Prefer Fallback

#AddDefaultCharset ISO-8859-1

AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8

AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis

AddType application/x-tar .tgz
AddType text/html .shtml

AddHandler cgi-script .cgi .pl
AddHandler server-parsed .shtml

#AddHandler send-as-is asis

AddHandler imap-file map

AddHandler type-map var

AddOutputFilter INCLUDES .shtml

Alias /error/ "/var/www/error/"

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
<Directory "/var/www/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>

ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

</IfModule>
</IfModule>

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully

#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your-domain.com
#</Location>

#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .your-domain.com
#</Location>

#<IfModule mod_proxy.c>
#ProxyRequests On
#
#<Proxy *>
# Order deny,allow
# Deny from all
# Allow from .your-domain.com
#</Proxy>

#ProxyVia On

#CacheRoot "/etc/httpd/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a-domain.com another-domain.edu joes.garage-sale.com

#<VirtualHost *>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>


スラッシュに気をつけましょう。

No.8651 投稿時間:2003年02月25日(Tue) 00:32 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

見当違いかもしれませんが、

> <Directory /home/*/public_html/>
は、
<Directory /home/*/public_html>

だと思います。最後のスラッシュはいらないと思います。
UNIX では、このスラッシュが大きな意味を持ちます。

あと、一昔の Apache では、

> AddHandler cgi-script .cgi .pl

AddHandler cgi-script .cgi .cgi/ .pl .pl/

のように、拡張子の末尾にスラッシュをつけないと、コードが丸見え(ソースがダウンロードできる)というバグがありました。
最近のものでは修正されていますが。


DocumentRootとUserDirが異なるディレクトリになっているから?

No.8653 投稿時間:2003年02月25日(Tue) 01:16 投稿者名:おやじ URL:http://www.aconus.com/~oyaji

こんばんは。


> DocumentRoot "/var/www/html"

(snip)

> <IfModule mod_userdir.c>
> UserDir public_html
>
> </IfModule>
>
> <Directory /home/*/public_html/>
> AllowOverride None
> Options Includes ExecCGI Indexes
> Order allow,deny
> Allow from all
> </Directory>

DocumentRootとUserDirが異なるディレクトリになっているので、UserDirは絶対パスで指定しないと、DocumentRootからの相対パスになってしまうはずです。今のまま異なるディレクトリで行くなら、下記のようにしないとうまくいかないはずですが。

<IfModule mod_userdir.c>
UserDir /home/*/public_html
</IfModule>


少し前進しました

No.8661 投稿時間:2003年02月25日(Tue) 12:49 投稿者名:困り者 URL:

帯鯖様、おやじ様返答有難うございます。

結果的に、まだ.cgiはファイルのダウンロードのままでは有りますが、
同時に起こっていた .pl がServer Errorになってしまうのは suexec を
止めたら動くようになりました。

mv /usr/sbin/suexec /usr/sbin/suexec.org

***

しかし、
<Directory /home/*/public_html/cgitest>
AllowOverride None
Options Includes ExecCGI Indexes
Order allow,deny
Allow from all
</Directory>

と、した後も ~username/cgitest/test.cgi がダウンロードになってしまう当たり
ここの設定では無い様な気がしてきました。
尚、
<Directory /home/*/public_html/cgitest>
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
も駄目でした。 .pl は実行出来るのになぁ・・・。.cgi はコンソール上から実行
したらOKなんですけどね・・。ダウンロードになっちゃうのはもっとメタなレイヤー
なのだろうか。

試行錯誤を続けたいと思います。
何か思い当たる節がありましたら、ぜひ教えていただきたいと思います。

宜しくお願いいたします。


更に、少し前進しました

No.8662 投稿時間:2003年02月25日(Tue) 12:53 投稿者名:困り者 URL:

同じ設定で、

mv test.cgi index.cgi

として、~username/cgitest/ で開いてみるとCGIが動いている様です。
また、当然フルパス指定
~username/cgitest/index.cgi でも動作出来ます。
が、

mv index.cgi test.cgi
で元に戻してから指定するとやっぱりダウンロードになってしまいます。
index.cgi のみ動く!?
うーん。

# 板を汚して申し訳有りません m(_ _)m


|目次|掲示板|過去ログ目次|▲頁先頭|