我的 CakePHP 根文件夹中有一个文件,位于名为 cron 的文件夹下。路径是:
c:/wamp/www/project/cron/daily.php
该文件需要在 cake 结构的 vendor 文件夹中放置另一个文件,如下所示:
require("/../vendors/phpMailer/class.phpmailer.php");
我从任务调度程序运行这个daily.php 。这是我的开发站点中的场景。(Windows系统)。它按预期工作正常。当我将项目迁移到 Ubuntu(生产站点)时,require语句开始引起问题;它找不到所需的文件。我在那里做了一个小改动,如下所示:
require("../vendors/phpMailer/class.phpmailer.php"); <= removed the preceding slash
它奏效了。所以我的疑问是,父目录符号在寡妇和 Linux 中的工作方式有什么不同吗?如果是这样,我该如何克服?每次我将项目从我的开发站点(Windows)移动到生产站点(Linux)时,删除一个斜线是不可行的。
我试过这个:
require("./../vendors/phpMailer/class.phpmailer.php");
它在linux中工作。但是在 Windows 中给出了“没有这样的文件目录”错误。似乎 windows 仅适用于:
require("/../vendors/phpMailer/class.phpmailer.php");
解决方案
来自@TWCrap 的帮助问题解决如下:
require(dirname(__FILE__)."/../vendors/phpMailer/class.phpmailer.php");
它适用于 Windows 和 linux(* 喜悦之泪 *)。但在 Windows 中,它产生的路径为:
C:\wamp\www\project\cron/../vendors/phpMailer/class.phpmailer.php
这条路看起来很丑,我希望它不会在未来造成问题!
-多谢你们!