PHP可以解析Mac别名吗?

时间:2015-04-28 20:20:52

标签: php macos alias

我正在运行MAMP并使用PHP来读取给定文件夹中所有文件的名称。我想为另一个文件夹中的某些图像创建一个别名,并让PHP将它们解析为它们的实际路径。我知道如何创建以这种方式工作的符号链接,但我希望允许非技术精明的网站所有者使用他们熟悉的Mac OS功能。

我在与我名为test的别名相同的文件夹中创建了一个PHP脚本:

<?php
if (is_link ("test")) {
 echo "is link";
} else {
 echo "is not link";
}
?>

这回应“不是链接”。我已尝试在链接上使用fread()命令,但PHP似乎挂起。它既不记录错误也不响应。我已经尝试在十六进制编辑器中打开别名以查看它包含的内容...但是十六进制编辑器打开看似巨大的文件(如果别名是文件),或者打开目标文件夹(如果别名是到文件夹)。

有没有办法帮助PHP解析别名中的路径?我可以调用AppleScript函数吗?

1 个答案:

答案 0 :(得分:1)

您可能没有提到实际的符号链接。如果您正在处理Finder别名,可以use the workaround found in the comments for the is_link docs

以下是评论的内容(以避免后代的仅链接答案):

if( getFinderAlias( $someFile , $target ) ) {
echo $target;
}
else {
echo "File is not an alias";
}

function getFinderAlias( $filename , &$target ) {
$getAliasTarget = <<< HEREDOC
    -- BEGIN APPLESCRIPT --
    set checkFileStr to "{$filename}"
    set checkFile to checkFileStr as POSIX file
    try
        tell application "Finder"
            if original item of file checkFile exists then
                set targetFile to (original item of file checkFile) as alias
                set posTargetFile to POSIX path of targetFile as text
                get posTargetFile
            end if
        end tell
    end try
    -- END APPLESCRIPT --
HEREDOC;
$runText = "osascript << EOS\n{$getAliasTarget}\nEOS\n";
$target = trim( shell_exec( $runText ) );
return ( $target == "" ? false : true );
}

以下是symlinks vs. aliases的一些解释。实际上,你应该避免使用Apple的抽象而只是create a symlink

ln -s /path/to/file /path/to/symlink