我正在从我的WAMP测试环境部署到在线测试......
本地我的包含路径是这样的:
include('C/wamp/www...')
如何在服务器上找到等效路径?
我尝试使用'/
'到达root但我收到此错误:
警告: require_once(/test123/mvc/views/txt/index_nav_txt.php) [function.require-once]:失败了 open stream:没有这样的文件或目录 在 /home/user/public_html/test123/mvc/views/components/st_footer.php 第37行
致命错误:require_once() [function.require]:打开失败 需要 '/test123/mvc/views/txt/index_nav_txt.php' (include_path中= ':/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP') 在 /home/user/public_html/test123/mvc/views/components/st_footer.php 第37行
答案 0 :(得分:4)
你真的需要:
require_once("/home/codlife/public_html/test123/mvc/views/txt/index_nav_txt.php");
请注意/home/codlife/public_html/
初始/
将您带到服务器的根目录,而您的代码位于/home/codlife/public_html/
答案 1 :(得分:3)
$_SERVER['DOCUMENT_ROOT']
它基本上为您提供了工作网站目录的完整路径,即c:/ wamp / www /(windows)或/var/www/vhost/domain.com/httpdocs/(linux)
答案 2 :(得分:0)
您可能应该阅读include_path(http://php.net/include_path) - 这通常设置为包含文档根目录(您的网站所在地)并且可以更改,以便您不必重复包含相同的路径
答案 3 :(得分:0)
如何在服务器上找到等效路径?
你找不到它 - 你告诉它应该在哪里。不可否认,当您购买托管软件包时,这并不总是实用的(IME通常得到很好的支持并且几乎没有文档)。
首先要注意的是,无论代码在何处/如何托管,您都应该始终使用相对于php include路径上配置的目录的路径(或者相对于最初由浏览器请求调用的PHP脚本 - ''。 '来自错误中引用的include_path的条目) - 绝不是绝对路径。你可以通过以下方式轻松找到它:
<?php
print ini_get('include_path');
?>
从错误消息中引用的路径判断,它似乎是一个POSIX系统。从FTP或SSH软件看,Web服务器看到的文件系统的根目录可能与root完全不同,但它们可能是相同的。
请注意,如果这是共享主机,那么您可能无法访问将文件放在/ usr / lib / php或/ usr / local / lib / php中 - 因此您唯一的选择是使用相对路径 - 这将变得非常混乱 -
你可以围绕这个做一些聪明的编码 - 但是看看Dokuwiki和phpmyadmin之类的软件包,看看他们如何以可重定位的方式组织包含文件而不依赖于操作php.ini设置。
或者,您可以通过.htaccess覆盖include_path,例如
php_value include_path ".:/home/codlife/public_html:/usr/lib/php:/usr/local/lib/php"
(这会为你的文档根目录设置一个基本的include_path)
HTH
下进行。
答案 4 :(得分:0)
使用配置文件来存储以下内容:
$application_root = '/home/code_life/public_html/';
在此文件中使用所有特定于环境的变量或常量。在不同的计算机上部署应用程序时,只需更新配置文件。
示例:
您的根应用程序中有一个名为settings with settings.php的文件夹,您可以在其中定义:
define('DIR_ROOT', dirname(dirname(__FILE__)) . '/');
现在,在每台机器上,DIR_ROOT将成为应用程序的根目录,您无需进行任何更改。