Index: src/wp-includes/plugin.php
===================================================================
--- src/wp-includes/plugin.php	(revision 31269)
+++ src/wp-includes/plugin.php	(working copy)
@@ -643,6 +643,7 @@
 function plugin_basename( $file ) {
 	global $wp_plugin_paths;

+	arsort( $wp_plugin_paths );
 	foreach ( $wp_plugin_paths as $dir => $realdir ) {
 		if ( strpos( $file, $realdir ) === 0 ) {
 			$file = $dir . substr( $file, strlen( $realdir ) );
Index: tests/phpunit/tests/plugin.php
===================================================================
--- tests/phpunit/tests/plugin.php	(revision 0)
+++ tests/phpunit/tests/plugin.php	(working copy)
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @group plugin
+ */
+class Tests_Plugin extends WP_UnitTestCase {
+
+	protected $wp_plugin_paths_backup;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->wp_plugin_paths_backup = $GLOBALS['wp_plugin_paths'];
+	}
+
+	public function tearDown() {
+		$GLOBALS['wp_plugin_paths'] = $this->wp_plugin_paths_backup;
+
+		parent::tearDown();
+	}
+
+	/**
+	 * @ticket 28441
+	 */
+	public function test_symlink_path_conflicts_resolved() {
+
+		global $wp_plugin_paths;
+
+		$wp_plugin_paths[ WP_PLUGIN_DIR . '/shopp' ] = '/Users/me/Dropbox/Development/Repositories/shopp';
+		$wp_plugin_paths[ WP_PLUGIN_DIR . '/trunk'] = '/Users/me/Dropbox/Development/Repositories/shopp-arrange/trunk';
+
+		$this->assertEquals(
+			'trunk/shopp-arrange.php'
+			, plugin_basename( '/Users/me/Dropbox/Development/Repositories/shopp-arrange/trunk/shopp-arrange.php' )
+		);
+	}
+}
