.htaccess文件、PHP、包含目录和Windows XAMPP配置的噩梦

bnl4lu3b  于 2022-11-30  发布在  PHP
关注(0)|答案(6)|浏览(152)

XAMPP使得为Windows配置本地LAMP堆栈变得轻而易举,因此,启用.htaccess文件是一场噩梦,这让人相当失望。
我的问题是:我有一个PHP应用程序,它需要apache/php来搜索应用程序中包含的/includes/目录。为此,Apache必须允许.htaccess文件,并且.htaccess文件必须指定包含目录的确切位置。
问题是,我不能让我的Apache配置来查看这些.htaccess文件。我在uni安装这个应用程序时遇到了很大的麻烦,让管理员帮助安装。这应该不是很难,但由于某种原因,我就是不能让Apache玩得很好。
这是我的设置:
c:\xamppc:\xampp\htdocsc:\xampp\apache\conf\httpd.conf-我做了下面列出的更改c:\xampp\apache\bin\php.ini-对该文件的更改影响PHP安装值得注意的是,c:\xampp\php\php.ini的更改没有任何意义-这不是影响PHP安装的ini。
下面几行是我对httpd.conf文件所做的添加

#AccessFileName .htaccess
AccessFileName htaccess.txt
#
# The following lines prevent .htaccess and .htpasswd
# files from being viewed by Web clients.
#
#<Files ~ "^\.ht">
<Files ~ "^htaccess\.">
    Order allow,deny
    Deny from all
</Files>

<Directory "c:/xampp/htdocs">
#
# AllowOverride controls what directives may be placed in
# .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>

以下是中包含的完整.htaccess档案:c:\xampp\htdocs\application\htaccess.txt

<Files ~ "\.inc$">
  Order deny,allow
  Deny from all
</Files>

php_value default_charset "UTF-8"
php_value include_path ".;c:\xampp\htdocs\application\includes"
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value magic_quotes_runtime 0
php_value magic_quotes_sybase 0
php_value session.use_cookies 1
php_value session.use_only_cookies 0
php_value session.use_trans_sid 1
php_value session.gc_maxlifetime 3600
php_value arg_separator.output "&amp;"
php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset="

包含目录存在于指定的位置。
当我尝试访问应用程序时,收到以下错误:

Warning: require(include.general.inc) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\application\menu\logon.php on line 21

致命错误:require()[函数. require]:无法打开所需的include.general.inc(include_path ='.; C:\xampp\php\pear\random '),位于第21行的C:\xampp\htdocs\application\menu\logon.php
包含路径c..\random\是在上面列出的php.ini文件中指定的。XAMPP安装无法允许htaccess.txt文件中指定的其他包含路径。
我猜可能是httpd.confhtaccess.txt文件有错误..但它似乎没有读取.htaccess文件。我已经尽可能彻底,所以请原谅文章的冗长。
现在,我知道一个解决方法是简单地将include_path添加到PHP文件中,但我将无法访问计划部署应用程序的位置上的php.ini文件。不过,我将能够请求服务器管理员允许.htaccess文件。
htacces.txt重命名为.htaccess,并在httpd.conf文件中修改了相应的指令,看起来一切都正常。应用程序建议在httpd中命名htaccess.txt并修改指令。这些显然是错误的(至少对于XAMPP堆栈而言)。
顺便说一下,如果应用程序需要部署到多个位置,使用ini_set()是一种更友好的方式,所以特别感谢这个指针。

uubf1zoe

uubf1zoe1#

1.为什么需要将.htaccess重命名为htaccess.txt
1.尝试使用set_include_path()设置include_path,看看是否有帮助(作为中间修复)
1.通过phpinfo()验证要使用哪个php.ini

oaxa6hgo

oaxa6hgo2#

您可以使用ini_set()修改每个请求的include_path,这样就完全不必使用htaccess。

vx6bjr1n

vx6bjr1n3#

我的htaccess在XAMPP下运行良好--尽管有些模块默认是禁用的--你确定你想要的模块是启用的吗?

a8jjtwal

a8jjtwal4#

我认为您要查找的搜索短语是:
AllowOverride All
我的猜测是,在xampp中,您需要在httpd.conf中启用AllowOverride(通过.htaccess)。这是一个简单的安全措施,可以防止新手安装可攻击的平台:P

c86crjj0

c86crjj05#

您需要在主http. conf文件中启用AllowOverride All。请查看XAMPP_DIR/apache/conf/http. conf)

gfttwv5a

gfttwv5a6#

只需执行以下操作:

open file ...\xampp\apache\conf\httpd.conf

find line "LoadModule rewrite_module modules/mod_rewrite.so"

if here is a # before this line remove it.(remove comment)

其工作

相关问题