用于href的CodeIgniter base_url()和用于file_exists()的getcwd()

时间:2016-10-18 14:52:13

标签: php codeigniter

如何概括或中和base_url()getcwd()之间的差异?

在视图中,我想同时显示内联PDF查看器(使用<object src=''></object>)和OCR&#39; ed输出。这两个都需要相同的源文件,该文件位于project/public/corpus/<some_id>/file.pdf(其中project是CodeIgniter根目录。)

控制器中的代码可以这样概括:

    /**
     * Fetch the path to the pdf of the document (OCR is preferred)
     * $handle is a unique identifier
     */
    $object_src = base_url("public/mi-corpus/" . $handle . "/file.pdf");

    $ocr_src = getcwd()."/public/mi-corpus/" . $handle . "/file.pdf";

    // Returns an <object> node from the source
    $this->data['object'] = $this->get_pdf($ocr_src);

    // uses a cloud OCR to parse the source and return OCR'ed text, this is irrelevant. But it does use file_exists($src) to check if the path is valid.
    $this->data['ocr'] = $this->mipreprocessing->open_ocr($ocr_src);

问题是,当使用base_url()时,函数file_exists($src)总是失败,但在为getcwd()生成src属性时,<object>并置失败}。

我看到base_url()会产生一个真实的&#39;类似URL的字符串(&#34; http://localhost/&#34;等),而getcwd()产生机器上的实际路径(&#34; D:\ wamp \ www&#34;等在我的情况下,在Windows 10上使用WAMP,我知道,它并不理想)。

有没有办法概括这个陈述,以便我不需要两个单独的路径连接?我做错了吗?

2 个答案:

答案 0 :(得分:1)

你需要两个,因为一个是路径而另一个是URL。但它可能会更干一些。

这个答案利用index.php - FCPATH中定义的方便常量。 它是前端控制器(index.php)目录的路径。使用常量将使代码更容易移植,更不容易出错。

$doc_location = "public/mi-corpus/" . $handle . "/file.pdf";
$object_src = base_url($doc_location);
$ocr_src = FCPATH.$doc_location;

答案 1 :(得分:0)

对于$ object_src变量,你必须使用以下格式的baseurl()函数

BASE_URL() “FOLDERPATH / file.pdf”

其中folderpath是服务器根目录的路径,例如www。

例如。如果您的pdf文件的服务器路径是/var/www/public/mi-corpus/file.pdf,而您的服务器根目录是/ var / www,那么您的object_src路径将在下面。

$ object_src = base_url()。“public / mi-corpus / file.pdf”;

我希望这可以帮助您理解问题。

感谢