当前位置: 首页 > 知识库问答 >
问题:

项目链接在 Wamp 服务器上不起作用

章睿
2023-03-14

我正在另一台计算机上安装Wamp服务器,以运行一个中型数据库和用户界面。我已经成功拦截了IIS,并将服务器路由到Localhost:8080。但是每当我试图从本地主机主页访问我的项目时,在www文件中;我被重定向到一个页面没有找到错误。

当我将鼠标悬停在链接上方时,目录总是出现“http:// ProjectFolderNameHere /”。当它应该是“http:// LocalHost:8080 / ProjectFolderNameHere /”时。我该怎么做才能使链接正常工作?

我的机器在Windows 7 Home Edition 64位上运行,我已经禁用了Microsoft的IIS。

共有3个答案

郗亦
2023-03-14

打开索引.phpwww 文件夹中并设置

$suppress_localhost = false;

这将在项目链接前面附加 http://localhost/

魏翰
2023-03-14

我相信这是最好的解决方案:

打开索引.php在 www 文件夹中并设置

更改第30行:< code > $ suppress _ localhost = true

to < code > $ suppress _ localhost = false;

这将确保项目以您的本地主机IP/名称为前缀

龚永新
2023-03-14

您可以通过作为WAMPServer的一部分提供的实用程序执行几乎所有操作。

>

  • 在里面创建一个文件夹来包含您的project.site.这可以在C:\wamp\www\目录下,也可以在一个完全独立的文件夹中,如C:\网站

    在您选择的位置(EG<code>C:\websites\project1\www</code>或<code>C:\wamp\www\project1\www</cde>下)创建文件夹

    现在打开localhostwampmanager-

    您将看到如下页面:

    >

  • 按照每个字段上方的说明指定的字段填写

    已经为您创建了虚拟主机配置。

    现在您必须重新启动DNS缓存。您可以从wampManager菜单中执行此操作,如下所示右键单击wampManager er-

    现在您必须创建一个简单的index.php文件或将您的站点安装到您上面创建的文件夹中。

    假设您的VH名为< code>project.dev,您应该在WAMPServer主页的“您的虚拟主机”部分看到该名称。

    您可以从该菜单启动站点,或者只需使用地址栏EG<code>project1.dev</code>中的新域名,即可启动站点。

    WampServer 2.5及更高版本的概念发生了变化,这是一个很好的原因!

    在WampServer中,现在强烈鼓励为每个项目创建一个虚拟主机,即使您将它们保存在\wamp\www\子文件夹结构中。

    虚拟主机文档

    虚拟主机示例

    WampServer主页(< code>\wamp\www\index.php)现在希望您已经为所有项目创建了一个虚拟主机,因此只有在您这样做的情况下,它才能正常工作。

    历史

    为了让初学者使用WampServer学习PHP Apache和MySQL更容易,建议您在\wamp\www\文件夹下创建子文件夹。

    wamp
      |-- www
           |-- Chapter1
           |-- Chapter2
           |-- etc
    

    然后,这些子文件夹将在WampServer主页中名为“您的项目”的菜单下显示为链接,这些链接将包含指向本地主机/子文件夹名称的链接。

    仅适用于简单教程

    这对完全的初学者来说很容易,对于那些学习PHP编码的教程来说也是完全可以接受的。然而,它从来没有打算用于开发一个真正的网站,你以后会想复制到您的生活托管服务器。事实上,如果您确实使用了这种机制,它通常会导致一些问题,因为live sites配置与您的开发配置不匹配。

    真正的网站开发问题。

    这样做的原因当然是wamp的默认DocumentRoot设置是

    DocumentRoot“c:\wamp/www/”

    无论子文件夹的名称是什么。在开发WampServer上运行时,经常使用PHP代码查询结构或站点的这一点收到的信息与在实时托管服务器上运行时收到的信息不同,其中DocumentRoot配置指向网站文件层次结构顶部的文件夹。这种代码存在于许多框架和CMS中,例如WordPress和Joomla等。

    为例

    假设我们在wamp\www\Project ect1中保存了一个名为Project ect1的项目,并且错误地以localhost/project1/index.php运行

    这是一些有问题的PHP命令所报告的内容:

    $_SERVER['HTTP_HOST'] = localhost
    $_SERVER['SERVER_NAME'] = localhost
    $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
    

    现在,如果我们使用虚拟主机定义正确定义了该站点并将其作为超文本传输协议运行,WAMPServer开发站点上的结果将与在实时托管环境中收到的结果相匹配。

    $_SERVER['HTTP_HOST'] = project1
    $_SERVER['SERVER_NAME'] = project1
    $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
    

    现在,这种差异起初可能看起来微不足道,但如果您要使用像WordPress这样的框架或像Joomla这样的CMS之一,例如,当您将站点移动到实时服务器时,这可能而且确实会导致问题。

    实际上,对于任何wndows Apache服务器来说,这应该基本上是一样的,不同之处只是在哪里可以找到Apache配置文件。

    在 Apache 中创建您的第一个虚拟主机有 3 个步骤,如果您已经定义了虚拟主机,则只需 2 个步骤。

    1. 创建虚拟主机定义
    2. 将新域名添加到HOSTS文件
    3. 在httpd中取消注释该行。conf,其中包含虚拟主机定义文件

    步骤1,创建虚拟主机定义

    编辑名为 httpd-hosts.conf 的文件,该文件适用于 WampServer

    \wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
    

    (Apache版本号可能会有所不同,请在继续之前联系brain)

    如果这是您第一次编辑此文件,请删除默认的示例代码,它没有任何用处。

    我假设我们想为一个名为project1的站点创建一个定义,该站点位于

    \wamp\www\project1
    

    非常重要,首先我们必须确保 localhost 仍然有效,以便这是我们放入此文件中的第一个 VHOST 定义。

    <VirtualHost *:80>
        DocumentRoot "c:/wamp/www"
        ServerName localhost
        ServerAlias localhost
        <Directory  "c:/wamp/www">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require local
        </Directory>
    </VirtualHost>
    

    现在我们定义我们的项目:当然,当你开始一个新的项目时,你要为你的每个项目做这个。

    <VirtualHost *:80>
        DocumentRoot "c:/wamp/www/project1"
        ServerName project1
        <Directory  "c:/wamp/www/project1">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require local
        </Directory>
    </VirtualHost>
    

    注意:每个虚拟主机都定义为其自己的文档根。您还可以将许多其他参数添加到虚拟主机定义中,请查看 Apache 文档。

    小边

    虚拟主机在Apache中的工作方式:该文件中的第一个定义也将是默认站点,因此如果浏览器中使用的域名与任何实际定义的虚拟托管域都不匹配,那么将localhost作为文件中的第一个域将使其成为在黑客尝试只使用您的IP地址时加载的站点。因此,如果我们确保该域的Apache安全性始终设置为

    Require local
    

    来自外部地址的任何偶然黑客攻击都会收到错误并且不会进入您的PC,但是如果您拼错了域,您将看到WampServer主页,因为您与WampServer在同一台PC上,并且是本地的。

    第2步:

    将新域名添加到主机文件。现在我们需要将我们在虚拟主机定义中使用的域名添加到 HOSTS 文件中,以便 Windows 知道在哪里可以找到它。这类似于创建 DNS A 记录,但在这种情况下,它仅在此特定电脑上可见。

    编辑C:\windows\system32\drivers\etc\hosts

    该文件没有扩展名,应该保持不变。注意记事本,因为它可能会尝试添加一个< code >。txt扩展名,如果你没有更好的编辑器。我建议你下载记事本,它是免费的,是一个非常好的编辑器。

    此外,这是一个受保护的文件,因此您必须使用管理员权限编辑它,因此使用“以管理员身份运行”菜单选项启动编辑器。

    完成这些编辑后,主机文件应如下所示

    127.0.0.1 localhost
    127.0.0.1 project1
    
    ::1 localhost
    ::1 project1
    

    请注意,您应该在这里定义IPV4环回地址127.0.0.1和IPV6环回地址::1,因为Apache现在支持IPV6,浏览器将使用IPV4或IPV6或两者兼而有之。我不知道它如何决定使用哪个,但如果您打开了IPV6堆栈,它可以使用任何一个,并且大多数窗口操作系统都像XP SP3一样。

    现在我们必须告诉 windows 刷新其域名缓存,因此再次使用“以管理员身份运行”菜单选项再次启动命令窗口,然后执行以下操作。

    net stop dnscache
    net start dnscache
    

    这会强制窗口清除其域名缓存并重新加载它,在重新加载时,它将重新读取 HOSTS 文件,因此现在它知道域项目1

    步骤3:在httpd中取消注释该行。conf,其中包含虚拟主机定义文件。

    编辑您的 httpd.conf,使用 wampmanager.exe 菜单来确保编辑正确的文件。

    在httpd.conf中找到这一行

    # Virtual hosts
    #Include conf/extra/httpd-vhosts.conf
    

    只需删除#即可取消注释该行。

    要在您运行Apache时激活此更改,我们现在必须停止并重新启动Apache服务。

    wampmanager.exe -> Apache -> Service -> Restart Service
    

    现在,如果系统托盘中的 WAMP 图标不再变为绿色,则表示您可能在 \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf 文件中做错了什么。

    如果是这样,这里有一个有用的机制来找出问题所在。它使用Apache exe(httpd.exe)的一项功能来检查其配置文件并按文件名和行号报告错误。

    启动命令窗口。

    cd \wamp\bin\apache\apache2.4.9\bin
    httpd -t
    

    因此,修复错误并重新测试,直到获得输出

    Syntax OK
    

    现在还有一件事。

    wampmanager菜单系统上实际上有两个新菜单项。其中一个名为“我的项目”,默认情况下处于打开状态。第二个名为“我的虚拟主机”,默认情况下不会激活。

    “我的项目”将列出\wamp\www目录的任何子目录,并提供一个链接来启动该子目录中的网站。如前所述,它启动“项目1”而不是“localhost/project1 ”,因此要使链接正常工作,我们必须创建一个虚拟主机定义,以使此链接在您的浏览器中实际启动该网站,如果没有虚拟主机定义,它可能会启动作为关键字的网站名称的网络搜索,或者只是返回一个网站未找到的条件。

    “我的虚拟主机”菜单项略有不同。它搜索用于定义虚拟主机的文件(我们将在一分钟内到达),并为找到的每个ServerName参数创建菜单链接,并为每个参数创建菜单项。这可能有点令人困惑,因为一旦我们为\wamp\www文件夹的子目录创建了虚拟主机定义,一些项目将同时出现在“我的项目”菜单和“我的虚拟主机”菜单上。

    如何打开我的虚拟主机菜单?

      < li >请备份\wamp\wampmanager.tpl文件,以防出错,这是一个非常重要的文件。 < li >编辑\wamp\wampmanager.tpl < li >查找此参数< code >;WAMPPROJECTSUBMENU,它在'[Menu。“左”部分。 < li >添加此新参数< code >;WAMPVHOSTSUBMENU,在< code >之前或之后;WAMPPROJECTSUBMENU参数。 < li >保存文件。 < li >现在右键单击wampmanager图标,并选择"刷新"。如果这样没有添加菜单,请“退出”并重新启动wampmanager。

    大注意只有当您已经定义了一些虚拟主机时,新菜单才会出现!否则,在您定义VHOST之前,您将看不到任何区别。

    现在,如果您将其作为逻辑扩展

    现在,只需更改VHOST定义中的DocumentRoot参数,就可以将网站代码完全移出< code>\wamp\文件夹结构。例如,你可以这样做:

    在wamp磁盘或任何其他磁盘上创建一个文件夹(小心网络驱动器,它们有点复杂)

    D:
    MD websites
    CD websites
    MD example.com
    CD example.com
    MD www
    

    您现在将您的站点代码复制到,或开始在\example.com\www文件夹中创建它,并像这样定义您的VHOST:

    <VirtualHost *:80>
        DocumentRoot "d:/websites/example.com/www"
        ServerName example.dev
        ServerAlias www.example.dev
        <Directory  "d:/websites/example.com/www">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        php_flag display_errors Off
        php_flag log_errors On
    
        php_value max_upload_size 40M
        php_value max_execution_time 60
        php_value error_log "d:/wamp/logs/example_com_phperror.log"
    </VirtualHost>
    

    然后将这个新的开发域添加到HOSTS文件中:

    127.0.0.1 localhost
    ::1 localhost
    
    127.0.0.1 project1
    ::1 project1
    
    127.0.0.1 example.dev
    ::1 example.dev
    

    注意:使用与您的实时域名相同的服务器名或服务器别名并不是一个好主意,如果我们使用example.com作为服务器名,这将意味着我们无法再从这台电脑访问真正的实时网站,因为它会将example.com定向到127.0.0.1,即这台电脑,而不是互联网。

    另外:请注意,我已经允许从VHOST定义中的Internet访问此站点,此更改将仅适用于此站点,而不适用于其他站点。对于允许客户端查看您的更改一个小时左右而无需将其复制到实时服务器非常有用。这确实意味着我们必须手动编辑此文件以打开和关闭此访问,而不是使用wampManager上的在线/离线菜单项。

    此外,我还对PHP配置添加了一些修改,这同样只适用于这一个站点。与您维护的所有其他站点不同,在维护具有特定要求的站点时非常有用。我想我们可以从使用的参数中假设,它在某个地方有一个长时间运行的页面,并且它写得非常糟糕,不会在浏览器上显示错误的情况下运行,而不会将页面弄得一团糟。相信我,像这样的网站存在,人们仍然希望它们得到很好的维护。但这意味着我们只需更改此特定站点的这些参数,而不是全局更改WampServer上运行的所有虚拟站点。

  •  类似资料:
    • 问题内容: 这有效,返回结果集: 当我尝试将结果集插入表中时: 无法给出此错误: 问题答案: 由于链接服务器“ svrA”的OLE DB提供程序“ SQLNCLI10”无法开始分布式事务,因此无法执行该操作。 消息很清楚也很明确。您所要做的只是打开系统文档,然后按照配置分布式事务的步骤进行操作:配置MS DTC服务 。

    • 我不熟悉Webbing和php。我曾经尝试过这个简单的php curl代码,但输出结果是空的。i、 当我运行以下代码时,我会得到一个空白网页 我在Windows7 64位pc上使用Wamp服务器2。我有未注释的php_curl。dll的php。wamp中apache/bin和php/bin中的ini文件。我已经检查了wamp服务器上的php_curl扩展。我仍然得到一个空白的网页。有什么问题吗?任

    • 问题内容: 从我的本地计算机到开发服务器,Web Deploy 3.0可以使用以下命令与Visual Studio 2012发布配置文件配合使用: msbuild。\ myproj.csproj / verbosity:d /p:DeployOnBuild=true;PublishProfile=Develop;VisualStudioVersion=11.0;AllowUntrustedCert

    • 我在架构“ID”中的链接服务器(宿主服务器)上有一个名为“Application”的表。我正在尝试使用< code>sp_help查看相同的详细信息。 但我做不到。问题是:1.sp_help位于schema中。(很明显!)2.但我的表位于另一个名为的模式中。(例如,从ID.Application中选择*) > 我已经将链接服务器添加到我的本地sql server management studio

    • 问题内容: 使用npm的默认帆(v.9?),–linker可以正常工作,即创建/ linker文件夹。我可以将js,css文件复制到它们,它们会自动出现。 我现在在本地和全局都安装了帆v0.10。使用节点V0.10.25。我使用以下命令创建了一个新的sails项目: 航行新的project_name –linker 但没有创建/ linker文件夹。我必须创建, 因为它不存在,我必须创建以将& 手

    • 在我的文件中,我有... 我知道文件正在正确加载,因为服务器在端口8086上运行。 在应用程序中,我有一个 当我调用endpoint时,请求永远不会超时,它只是无限期地挂起。 我错过了什么吗? 注意:我还被告知,Tomcat使用这个字段是以分钟为单位,而不是以毫秒为单位(这在我看来是相当不寻常的选择)。我试着将它设置为< code > server . connection-time out =