htaccess文件,php,包括目录和Windows XAMPP配置噩梦

时间:2020-03-06 14:55:11  来源:igfitidea点击:

XAMPP使配置Windows的本地LAMP堆栈变得轻而易举。因此,启用htaccess文件真是一场噩梦,这真令人失望。

我的问题:
我有一个PHP应用程序,需要apache / php来搜索该应用程序中包含的/ includes /目录。为此,必须在apache中允许htaccess文件,并且htaccess文件必须确切指定include目录的位置。

问题是,我无法获取我的apache配置来查看这些htaccess文件。我在uni上安装此应用程序时遇到了很多麻烦,并在那里找了管理员来帮助进行设置。这不应该那么难,但是由于某种原因,我只是无法让Apache表现出色。

这是我的设置:

c:\ xampp
c:\ xampp \ htdocs
c:\ 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()[function.require]:无法在C:\ xampp \ htdocs \ application \中打开所需的'include.general.inc'(include_path ='.; C:\ xampp \ php \ pear \ random')第21行的menu \ logon.php

包含路径c .. \ random \在上面列出的php.ini文件中指定。 xampp安装无法允许htaccess.txt文件中指定的另一个包含路径。

请帮忙!我猜想httpd.conf或者htaccess.txt文件可能存在错误..但是它似乎没有在读取htaccess文件。我已经尝试过尽可能详尽,以便原谅这篇文章的冗长内容。

现在,我知道一种解决方法是将include_path简单地添加到php文件中,但是我将无法访问我打算部署应用程序的位置上的php.ini文件。但是,我将能够请求服务器管理员允许htaccess文件。

更新:将htacces.txt重命名为.htaccess,并修改了httpd.conf文件中的相应指令,所有这些似乎都可以正常工作。该应用程序建议htaccess.txt的命名以及httpd中的扩展指令。这些显然是错误的(至少对于xampp堆栈而言)。谢谢帮助。

顺便说一句,如果需要将应用程序部署到多个位置,则使用ini_set()是更友好的方法,因此特别感谢该指针。

解决方案

我们可以使用ini_set()更改每个请求的include_path。这将避免完全使用htaccess。

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

尽管默认情况下禁用了某些模块,但我的htaccess可以在XAMPP下正常工作,我们确定要启用的模块是否已启用?

我认为我们要搜索的搜索词是:

允许全部覆盖

我的猜测是,在xampp中,我们需要在httpd.conf中启用AllowOverride(通过.htaccess)。这是一种简单的安全措施,可防止新手安装可黑客攻击的平台:P

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