PHP 路径在 localhost 中的运行脚本上加倍

Posted

技术标签:

【中文标题】PHP 路径在 localhost 中的运行脚本上加倍【英文标题】:PHP paths are doubling on running script in localhost 【发布时间】:2017-10-14 12:00:18 【问题描述】:

我有一个包含不同 php 文件和 sql 数据库的网站。这是一个内容管理网站。我正在尝试在此路径上使用 XAMPP 服务器在 localhost 上对其进行测试: 本地主机/avs avs 是 index 和所有其他文件所在的文件夹。 当我启动该网站时,它会显示一个启动屏幕,但不会转到进一步的链接,因为链接兼作: 输入按钮:localhost/avs 更改localhost/avs/localhost/avs

下面是 configs.paths.php 的代码,我在其中插入了 localhost 路径,[仅更改了 01 处 BASE_URL,其余均为默认]:

<?php
defined('_VALID') or die('Restricted Access!');
$config = array();
$config

['BASE_URL'] = 'localhost/avs';
$config['RELATIVE'] = '';
$config['BASE_DIR'] = 

dirname(dirname(__FILE__));
$config['TMP_DIR'] = $config['BASE_DIR']. '/tmp';
$config['LOG_DIR'] = $config['BASE_DIR']. '/tmp/logs';
$config['IMG_DIR'] = 

$config['BASE_DIR']. '/images';
$config['IMG_URL'] = $config['BASE_URL']. 

'/images';
$config['PHO_DIR'] = $config['BASE_DIR']. '/media/users';
$config

['PHO_URL'] = $config['BASE_URL']. '/media/users';
$config['VDO_DIR'] = $config

['BASE_DIR']. '/media/videos/vid';
$config['VDO_URL'] = $config['BASE_URL']. 

'/media/videos/vid';
$config['FLVDO_DIR'] = $config['BASE_DIR']. 

'/media/videos/flv';
$config['FLVDO_URL'] = $config['BASE_URL']. 

'/media/videos/flv';
$config['TMB_DIR'] = $config['BASE_DIR']. 

'/media/videos/tmb';
$config['TMB_URL'] = $config['BASE_URL']. 

'/media/videos/tmb';

$config['HD_DIR'] = $config['BASE_DIR'].'/media/videos/hd';
$config['HD_URL'] = $config['BASE_URL'].'/media/videos/hd';
$config

['IPHONE_DIR'] = $config['BASE_DIR'].'/media/videos/iphone';
$config

['IPHONE_URL'] = $config['BASE_URL'].'/media/videos/iphone';        
?>

.htaccess:

# Comment the 2 lines below if the server returns 500 errors!
Options -Indexes
Options +FollowSymLinks

#Uncomment following lines if you want to use image caching!
#<IfModule mod_expires.c>
#  ExpiresActive On
#  ExpiresDefault A1209600
#  ExpiresByType text/html A1
#</IfModule>

# Uncomment following lines if Apache doesnt support MultiViews!
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Uncomment the 2 lines below if you are using www.domain.com
    # as the baseurl for the site and users access your site 
    # via domain.com (THIS IS REQUIRED FOR JQUERY TO WORK)

    RewriteCond %HTTP_HOST ^yourdomain.com [NC]
    RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301] 

    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule .* loader.php [L,QSA]
</IfModule>

# Edit below lines and set to
# ErrorDocument CODE /RELATIVE/error.php
# If the script is installed in the default document
# root then relative is null.
#ErrorDocument 401 /error.php
#ErrorDocument 403 /error.php
#ErrorDocument 404 /error.php

其他信息:sql数据库链接成功(已测试)

【问题讨论】:

请检查htaccess是否存在?有没有保存网址的表格?您能否分享屏幕截图以获取更多详细信息? @PramodKharade 先生,我编辑了帖子并在我的 avs 脚本文件夹中添加了 htaccess 的代码 请帮忙 【参考方案1】:

我无法确定,因为您没有举例说明如何使用您定义的 URL,但您似乎正在尝试构建不同页面的绝对 URL,问题是您有定义为基本 URL 为:

$config['BASE_URL'] = 'localhost/avs'

包括主机名但没有包括http://,所以如果你这样做:

<img scr="<?php echo $config['IMG_URL']?>/image.jpg">

你得到的是一个相对 URL 而不是一个绝对 URL,http://localhost/avs/index.php 中包含的任何 URL 都将指向 http://localhost/avs/localhost/avs/[anything],因为相对 URL 是相对于它们所在文件的路径包括在内。

换句话说,如果不包括http://https://,主机名将被解释为路径的另一个目录。

你有两个选择来解决这个问题:

将所有 URL 转换为绝对 URL,包括基本 URL 中的 http://

$config['BASE_URL'] = 'http://localhost/avs'

使用相对于根目录的 URL(不包括主机名):

$config['BASE_URL'] = '/avs'

【讨论】:

以上是关于PHP 路径在 localhost 中的运行脚本上加倍的主要内容,如果未能解决你的问题,请参考以下文章

在 localhost 上使用 python 作为服务器脚本语言的最佳方式

如何使用 Windows 计划任务运行 PHP 脚本?

PHP 中的 MySQL;我的脚本的奇怪行为

在 ubuntu 上运行 php 脚本

将 HTML 表单操作与位于另一个目录中的 php 脚本一起使用(相对路径)

在 PHP 脚本上运行 Cron 作业,在 Windows 的本地主机上