Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数在本地主机上工作,但在服务器上不工作_Php - Fatal编程技术网

Php 函数在本地主机上工作,但在服务器上不工作

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, "

我做了一个函数来获取网站存储的主文件夹路径。在localhost中,它可以正常工作

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中的文件中包含该文件,而不是建议使用常量
目录分隔符