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

Jos*_*ton 2 php apache xampp .htaccess config

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

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

问题是,我无法通过 Apache 配置来查看这些.htaccess文件。我在大学安装这个应用程序并让管理员帮助我进行设置时遇到了很大的麻烦。这不应该那么难,但由于某种原因我就是无法让 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>
Run Code Online (Sandbox Code Playgroud)

以下是.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="
Run Code Online (Sandbox Code Playgroud)

include 目录存在于指定的位置。

当我尝试访问该应用程序时,我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

致命错误:require() [function.require]:第 21 行无法打开 required include.general.inc(include_path='.;C:\xampp\php\pear\random')C:\xampp\htdocs\application\menu\logon.php

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

httpd.conf我猜OR文件可能有错误htaccess.txt..但它似乎没有读取文件.htaccess。我已经尽力做到尽可能彻底,所以请原谅这篇文章的冗长。

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

重命名htacces.txt.htaccess并修改了文件中的适当指令httpd.conf,一切似乎都有效。该应用程序建议了 httpd.conf 文件中的命名htaccess.txt和修改指令。这些显然是错误的(至少对于 XAMPP 堆栈而言)。

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

Til*_*ill 5

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