pho*_*nix 5 php linux windows relative-path require-once
我的 CakePHP 根文件夹中有一个文件位于名为 cron 的文件夹下。路径是:
c:/wamp/www/project/cron/daily.php
Run Code Online (Sandbox Code Playgroud)
此文件需要放置在蛋糕结构的供应商文件夹中的另一个文件,如下所示:
require("/../vendors/phpMailer/class.phpmailer.php");
Run Code Online (Sandbox Code Playgroud)
我从任务调度程序运行这个daily.php。这是我的开发站点中的场景。(Windows系统)。它按预期工作正常。当我将项目迁移到 Ubuntu(生产站点)时,require语句开始引起问题;它找不到所需的文件。我在那里做了一个小改动,如下所示:
require("../vendors/phpMailer/class.phpmailer.php"); <= removed the preceding slash
Run Code Online (Sandbox Code Playgroud)
它奏效了。所以我的疑问是,在寡妇和 Linux 中父目录表示法的工作方式有区别吗?如果是这样,我该如何克服?每次将项目从我的开发站点(windows)移动到生产站点(Linux)时,删除斜杠是不可行的。
我试过这个:
require("./../vendors/phpMailer/class.phpmailer.php");
Run Code Online (Sandbox Code Playgroud)
它在linux中工作。但是在 Windows 中给出了“没有这样的文件目录”错误。似乎 Windows 仅适用于:
require("/../vendors/phpMailer/class.phpmailer.php");
Run Code Online (Sandbox Code Playgroud)
解决方案
来自@TWCrap 的帮助问题解决如下:
require(dirname(__FILE__)."/../vendors/phpMailer/class.phpmailer.php");
Run Code Online (Sandbox Code Playgroud)
它适用于 windows 和 linux(* 喜悦之泪 *)。但在 Windows 中,它生成的路径为:
C:\wamp\www\project\cron/../vendors/phpMailer/class.phpmailer.php
Run Code Online (Sandbox Code Playgroud)
这条路看起来很丑,我希望它不会在未来引起问题!
-谢谢你们!
我记得,当您在该行前面放置 1 个点时,您将从您所在的目录开始。那么该行必须如下所示:
require("./../vendors/phpMailer/class.phpmailer.php");
Run Code Online (Sandbox Code Playgroud)
这应该适用于 windows 和 linux ....
| 归档时间: |
|
| 查看次数: |
13335 次 |
| 最近记录: |