A module I'm working on maintains a list of files in the private file system folder in Drupal. I use
hook_file_download to control access to these files.
I generate links to these files, which end up like:
My website path is
/var/www/sample.com/www and the private folder path is configured to be
Now, if the file is placed is
/var/www/sample.com/private/my_folder/file.pdf, everything works fine and I can properly control access to the file and deliver it. However, if
my_folder is located elsewhere and symlinked in, then things break. I've tracked part of it down to the PHP function
file_exists returning false, which is called in
I'm not sure where to go from here. Everything I've searched for thusfar indicates that symlinks should work just fine. The permissions on the symlinked directory are OK - the directory is 755 and the files are 644.
What else could this be?
I've tried this on the latest PHP 5.3 and PHP 5.4 with no difference.
EDIT: It's worth mentioning that I can get
file_exists to return true if I pass the absolute path to the symlinked file. Drupal is passing a stream wrapper though (
private://my_folder/file.pdf). So looks like it could be related to the streamwrapper somehow?