Php 函数在本地主机上工作,但在服务器上不工作
我做了一个函数来获取网站存储的主文件夹路径。在localhost中,它可以正常工作Php 函数在本地主机上工作,但在服务器上不工作,php,Php,我做了一个函数来获取网站存储的主文件夹路径。在localhost中,它可以正常工作 function get_path() { $current=dirname(__FILE__) . '/'; $name=basename(__DIR__); $from=array($name); $to=array(''); $result=str_replace($from,$to,$current); return trim($result, "
function get_path()
{
$current=dirname(__FILE__) . '/';
$name=basename(__DIR__);
$from=array($name);
$to=array('');
$result=str_replace($from,$to,$current);
return trim($result, "/\\");
}
但在服务器中,它在包含文件时显示错误
include(): Failed opening 'home3/home/public_html/dev/ship\model\main.php' for inclusion (include_path='.:/opt/php54/lib/php')
文件肯定在那个目录中。但是它不起作用。您正在删除第一个斜杠(第一个字符)-另外,您正在路径中使用\而不是/ 要创建路径,您应该使用PHP函数realpath来管理斜杠:尝试以下操作
// Define directory separator
define('DS', DIRECTORY_SEPARATOR);
function get_path()
{
$current = dirname(__FILE__) . DS;
$name = basename(__DIR__);
$from = array($name);
$to = array('');
$result = str_replace($from, $to, $current);
return $result;
}
或者您可以使用:
// define directory separator
define('DS', DIRECTORY_SEPARATOR);
function get_path($withSlash = true)
{
$path = realpath(dirname(__FILE__));
if ($trailingSlash) {
$path .= DS;
}
return $path;
}
为什么要从绝对文件路径中修剪前导的
/
?这是因为要从我正在删除的文件夹名称中删除额外的/但这正是造成问题的原因,您不应该修剪前导的/
。我的目标是使函数可以用于包含文件夹中已有文件中的文件。假设我有include文件夹,它有db.php文件。我想创建一个函数,从include/modules/class/config.phpin中的文件中包含该文件,而不是建议使用常量目录分隔符