应用程序在 Mac 上找不到路径(在类似条件下在 Win 上工作)
Posted
技术标签:
【中文标题】应用程序在 Mac 上找不到路径(在类似条件下在 Win 上工作)【英文标题】:App cannot find path on a Mac (works on Win under similar conditions) 【发布时间】:2021-04-01 05:47:00 【问题描述】:我开发了一个在 Windows 计算机上使用 localhost 的应用程序(以前使用 MAMP,而不是到处使用 XAMPP)。 Mac 上打算使用的同一应用程序找不到我需要从本地目录打开的日志文件。
配置:
// live/development specific settings
if(LIVE)
// If site in live mode
define('SPOOLER_LOG_FILE', '/opt/program_name/var/tmp/logfile.log');
else
// If site is in development mode
define('SPOOLER_LOG_FILE', 'C:/xampp/htdocs/logfile.log');
所以是的,我已经检测到实际路径并将其放入应用程序中,用于 Windows 开发和 Mac 实时环境。
代码卡住的地方(在 Windows 上工作,在 Mac 上找不到日志文件):
// Get the log file location and Load the log file contents into an array
if(file_exists(SPOOLER_LOG_FILE))
$spooler_log_array = load_tabbed_file(SPOOLER_LOG_FILE);
else
die('LOG NOT FOUND!');
注意:load_tabbed_file() 函数只是将制表符分隔的文件读入一个数组以供以后使用(= 与此问题无关)。
所以,file_exists() 函数似乎正在停止一切,因为它找不到文件(我也尝试在没有 file_exists() 的情况下直接运行 load_tabbed_file() 并且这也不起作用,所以可能是路径有问题) .
Mac 上的路径我导航到文件并复制了 Finder 给我的路径。我知道应该使用绝对路径,但我真的不确定我使用的路径是否正确,或者问题是否可能出在其他地方。
我真诚地希望这是一个小问题,这里有人可以为我指明正确的方向。经过一番搜索后,我一点也不聪明,如果有人可以提供帮助,我很乐意跳过花费数小时来让路径在 Mac 环境中运行......
【问题讨论】:
您是否收到错误消息 那么愚蠢的问题 目录/opt/program_name/var/tmp
退出了吗?
@RiggsFolly 没有错误消息,file_exist() 只是返回 false,因为它找不到文件夹。是的,该文件夹确实存在并且其中包含日志文件(我使用 Finder 和 Show Path Bar 来复制日志文件路径)。注意:程序名称和日志文件名称已更改以在此处显示。它是由打印机翻录软件创建的日志文件。据我所知,解释 php 找不到它是不受保护的。文件夹的 CHMOD 是 777(我检查了这个)。我相信这应该允许足够的访问权限。不太确定任何其他权限,但我可以使用 textedit 打开日志文件。
目前我认为问题可能在于我尝试访问的文件夹位于 XAMPP htdocs 文件夹之外(/opt/lampp/htdocs/app for program vs /opt/ program_name/var/tmp/logfile.log 用于我需要访问的日志)。如果我将日志文件复制到 /opt/lampp/htdocs 根目录,那么我可以使用相对路径“../logfile.log”访问它。现在的问题是如何强制使用有效的绝对路径(/opt/program_name/var/tmp/logfile.log 显然不起作用,尽管那是真正的绝对路径)或者我需要弄清楚是否以及如何使用相对路径行之有效的路径。
也尝试了符号链接。他们创造得很好,但也不会工作。到目前为止,唯一有效的是在 htdocs 下复制日志文件,但 IRL 不是一个选项(除非使用某些 3rd 方工具来执行此操作)。
【参考方案1】:
好吧,事实证明 XAMPP 默认会为您提供 VM(虚拟机)下载,而在我被告知之前,我什至不知道他们有单独的安装程序。抓住它,安装,一切正常......
【讨论】:
以上是关于应用程序在 Mac 上找不到路径(在类似条件下在 Win 上工作)的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OSX 10.6.8 上找不到 mysqladmin
BindingExpression 路径错误:在“对象”上找不到属性