我正在使用现有的PHP Web应用程序。它在远程Linux服务器上正常运行,但我无法在本地计算机上的WAMP服务器,Windows 7上运行它。问题是之前的开发人员在整个代码中使用了绝对路径。例如,其中一个是:
require '/disk2/html/src/web_tool/db_connect.php';
我的localhost文件夹是F:\wamp\www
,我的结构相同:
F:\wamp\www\myProject\disk2\html\src\web_tool\db_connect.php
但它无法找到db_connect.php。我无法改变路径,因为它是一个大项目,如果我愿意,我必须找到并更改超过400行代码。我不确定问题是什么以及如何使其发挥作用。任何建议都受到高度赞赏。
编辑:我在WAMP服务器上运行了一个简单的测试。我创建了这个文件结构:
F:\wamp\www\test\myfolder\index.php
使用此代码:
require '/myinc.php';
和F:\wamp\www\test\myinc.php
使用此代码:
echo 'It works!';
我收到了这个警告:
Warning: require(/myinc.php): failed to open stream: No such file or directory in F:\wamp\www\test\myfolder\index.php on line 2
并出现此错误:
Fatal error: require(): Failed opening required '/myinc.php' (include_path='.;C:\php\pear') in F:\wamp\www\test\myfolder\index.php on line 2
我的磁盘上没有C:\ php \ pear这样的文件夹。
刚刚安装了WAMP服务器,无法触及php.ini或其他配置文件中的任何内容。版本是:
WAMP SERVER 64位版本2.5包括:
Apache:2.4.9 MySQL:5.6.17 PHP:5.5.12 PHPMyAdmin:4.1.14 SqlBuddy:1.3.3 XDebug:2.2.5
答案 0 :(得分:1)
如果你有相同的文件夹结构,一个简单的set_include_path()应该解决根目录中的问题。 我猜在F:\ wamp \ www \ myProject应该有一个索引文件,只需添加:
set_include_path('');
但如果你找不到你正在寻找的文件,我猜它丢失/你没有复制你需要的所有东西(类似的东西)。比问题不是真正的相对路径。
答案 1 :(得分:1)
我认为您最好的解决方案是移动网站源并创建虚拟主机,然后绝对路径就可以工作,您也可以正确地解决网站问题。
首先将disk2文件夹及其所有子文件夹移动到F:驱动器的根目录。
F:\disk2.....
然后创建一个虚拟主机来描述其新位置。
修改\wamp\bin\apache\apache2.x.y\conf\extra\httpd-vhosts.conf
如果这是您的第一个虚拟主机定义,请删除此文件的现有内容。
我假设F:\disk2\html
是成为您的DocumentRoot的正确文件夹。
将此添加到文件
<IfDefine !APACHE24>
NameVirtualHost *:80
</IfDefine>
## so the the wamp menu page loads
<VirtualHost *:80>
DocumentRoot "F:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "F:/wamp/www">
AllowOverride All
<IfDefine APACHE24>
Require local
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
</IfDefine>
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "F:/disk2/html"
ServerName example.dev
ServerAlias www.example.dev
<Directory "F:/disk2/html">
AllowOverride All
<IfDefine APACHE24>
Require local
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
</IfDefine>
</Directory>
</VirtualHost>
保存此文件。
修改httpd.conf
并从此行中删除评论
#Include conf/extra/httpd-vhosts.conf
删除第1列中的#
并保存该文件。
现在编辑hosts
文件C:\windows\system32\drivers\etc\hosts
并添加这些行。
127.0.0.1 example.dev
::1 example.dev
这是一个受Windows保护的文件,因此您必须使用&#34;以管理员身份运行&#34;打开您的编辑器。或者你不会被允许保存你的更改。
现在使用&#34;以管理员身份运行&#34;启动命令窗口。并执行这两个语句,通过对hosts文件的更改来刷新DNS缓存。
net stop dnscache
net start dnscache
现在重新启动Apache以便它获取配置更改,您应该能够在浏览器地址栏中使用此地址。
example.dev
DocumentRoot应该与在实时服务器上一样,并且PHP代码中使用的绝对路径现在也应该像在实时服务器上那样工作。
将example.dev
更改为与您的实际网站域名相关的任何内容。
答案 2 :(得分:0)