PHPackages                             whmcsexpert/symlink-detective - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. whmcsexpert/symlink-detective

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

whmcsexpert/symlink-detective
=============================

Library allows to determine realpath to your script when you try to do it from symlinked file

1.0.1(5y ago)09PHP

Since Sep 26Pushed 5y agoCompare

[ Source](https://github.com/whmcsexpert/symlink-detective)[ Packagist](https://packagist.org/packages/whmcsexpert/symlink-detective)[ RSS](/packages/whmcsexpert-symlink-detective/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (3)Dependencies (1)Versions (5)Used By (0)

SymlinkDetective - real detective for unreal paths
==================================================

[](#symlinkdetective---real-detective-for-unreal-paths)

[![Latest Stable Version](https://camo.githubusercontent.com/b9acd887b39e082df065ccb6721c0a2495e0be94f1cd5679089f3a797f8b8802/68747470733a2f2f706f7365722e707567782e6f72672f616e642f73796d6c696e6b2d6465746563746976652f762f737461626c65)](https://packagist.org/packages/whmcsexpert/symlink-detective)[![Latest Unstable Version](https://camo.githubusercontent.com/2a17326861bfcb3805f7b3d7da3ecec3ff4f9b474e11fe4a62f4e619c83513f9/68747470733a2f2f706f7365722e707567782e6f72672f616e642f73796d6c696e6b2d6465746563746976652f762f756e737461626c65)](https://packagist.org/packages/whmcsexpert/symlink-detective)[![License](https://camo.githubusercontent.com/3f33728d32337b97a25d9bcbe88e4a501b5c5f1068f6d98ec25e7154bb636736/68747470733a2f2f706f7365722e707567782e6f72672f616e642f73796d6c696e6b2d6465746563746976652f6c6963656e7365)](https://packagist.org/packages/whmcsexpert/symlink-detective)[![composer.lock](https://camo.githubusercontent.com/c4d5de88b495021ae45f8efdc8915b6d922e1a892860675ce79a27f9d5b735ac/68747470733a2f2f706f7365722e707567782e6f72672f616e642f73796d6c696e6b2d6465746563746976652f636f6d706f7365726c6f636b)](https://packagist.org/packages/whmcsexpert/symlink-detective)

Hey, this library is allows you to find the real path from all that mess, if you use symlinks for some directories in your project. Just and example:

- Project root dir: `/var/www/sites/your-project`
- `/var/www/sites/your-project/library` is pointed to `/var/www/libs/library`
- `/var/www/sites/your-project/public` with app.php inside is pointed to `/var/www/libs/frontend`(so `/var/www/sites/your-project/public/app.php` is pointed to `/var/www/libs/frontend/app.php`)

If somewhere in library (`/var/www/libs/library`) you do reference to some path like `library/../app/config.php`

- your path be equal to `/var/www/libs/library/../app/config` == `/var/www/libs/app/config`, and guess - paths is not exists.

But there is solution - you can call `SymlinkDetective::detectPath(__DIR__ . '/../app/config')` and mr. SymlinkDetective will do the magic

Examples

- `SymlinkDetective::detectPath(__DIR__ . '/../app/config')` returns `/var/www/sites/your-project/app/config`
- `SymlinkDetective::detectPath(__FILE__,  '/../app/config')` returns `/var/www/sites/your-project/app/config`
- `SymlinkDetective::detectPath(__FILE__,  '/../app/unexistent-file', false)` throws an Exception as file doesn't found/exists
- `SymlinkDetective::detectPath(__DIR__ . '/../unexistent-file')` returns `/var/www/libs/library/unexistent-file` as file not found and Exception throwing is muted (3rd argument)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 56.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~360 days

Total

4

Last Release

2071d ago

Major Versions

v0.7.x-dev → 1.0.02020-09-10

### Community

Maintainers

![](https://www.gravatar.com/avatar/2a96c0b635bd3895936611a6122f3a2ea896c810664437525e1bc6420cf4f19d?d=identicon)[eunarede](/maintainers/eunarede)

---

Top Contributors

[![logical-and](https://avatars.githubusercontent.com/u/1403109?v=4)](https://github.com/logical-and "logical-and (9 commits)")[![andrekutianski](https://avatars.githubusercontent.com/u/5316107?v=4)](https://github.com/andrekutianski "andrekutianski (7 commits)")

### Embed Badge

![Health badge](/badges/whmcsexpert-symlink-detective/health.svg)

```
[![Health](https://phpackages.com/badges/whmcsexpert-symlink-detective/health.svg)](https://phpackages.com/packages/whmcsexpert-symlink-detective)
```

###  Alternatives

[dantleech/fink

Checks Links

2266.3k2](/packages/dantleech-fink)[grasmash/composerize-drupal

Convert a non-Composer managed Drupal application into a Composer-managed application.

12819.4k1](/packages/grasmash-composerize-drupal)[puli/manager

Manages the puli.json file of a Puli project.

6847.9k3](/packages/puli-manager)[chenos/v8js-module-loader

1629.5k1](/packages/chenos-v8js-module-loader)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
