Поддержка Проблемы и решения __FILE__ в файле, который лежит на сервере через folder alias

  • Делаю ярлык для папки

    ln -s "/Users/kolya/Documents/Dropbox/Develop/WordPress/Plugins/bbPress Permalinks/plugin/" bbpress-pemalinks

    Кладу его в /Users/kolya/Sites/wp.local/html/wp-content/plugins/ (локальный сервер).

    Из файла /Users/kolya/Sites/wp.local/html/wp-content/plugins/bbpress-permalinks/plugin.php выводится echo __FILE__ и получаю:

    /Users/kolya/Documents/Dropbox/Develop/WordPress/Plugins/bbPress Permalinks/plugin/plugin.php

    А надо получить:

    /Users/kolya/Sites/wp.local/html/wp-content/plugins/bbpress-permalinks/plugin.php

    Можно ли это исправить где-то в конфигурации PHP? Работаю на Mac OS, если это имеет значение.

    P. S. Все выше описанное делается, чтобы на Dropbox хранить лишь исходный код своего плагина, а не всю установку WordPress.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Модератор Yuri

    (@yube)

    https://bugs.php.net/bug.php?id=46260 оно?

    Попробуйте сделать не симлинк, а обычный линк.

    Да, кажется, оно, но как там написано:

    // file1.php
    include 'file2.php';
    // file2.php
    echo $_SERVER['SCRIPT_FILENAME'];
    
    Executing file1.php will result in "/path/to/file1.php"

    В WordPress $_SERVER[‘SCRIPT_FILENAME’] отдает /Users/kolya/Sites/wp.local/html/index.php. А мне нужен именно путь до файла моего плагина, иначе я не могу повесить activation hook на него 🙂

    На stackoverflow предложили

    echo realpath(__FILE__);

    Но это все равно выводит тоже самое, что и просто __FILE__.

    Модератор Yuri

    (@yube)

    readlink(__FILE__)

    Вообще ничего не отдает 🙂 Вернее через var_dump видно bool(false).
    Может быть из-за того, что plugin.php не symbolic link, в котором я вывожу __FILE__? symbolic link у меня bbpress-permalinks, а файл plugin.php, который лежит в этой «папке» уже настоящий.

    Еще предложили на stackoverflow вот такой вариант http://chrismarslender.com/2012/07/29/wordpress-register_activation_hook-doesnt-work-with-symlinks/

    basename(dirname(__FILE__)).'/'.basename(__FILE__)

    У меня он отдает plugin/plugin.php.

    Модератор Yuri

    (@yube)

    Попробуйте все-таки сделать простой линк, не символический.

    ~/temp> mkdir d1
    ~/temp> mkdir d2
    ~/temp> cd d1
    ~/temp/d1> echo '<?php echo __FILE__ . "\n";' > f.php
    ~/temp/d1> cd ../d2
    ~/temp/d2> ln -s ../d1/f.php f1.php
    ~/temp/d2> ln ../d1/f.php f2.php
    ~/temp/d2> php f1.php
    /home/***/temp/d1/f.php
    ~/temp/d2> php f2.php
    /home/***/temp/d2/f2.php

    Что-то я запутался в «трех соснах» в вашем коде 🙂 Я попробовал набрать в терминале

    ln "/Users/kolya/Documents/Github/bbPress-permalinks-with-id/plugin/" test

    И получаю ошибку

    ln: /Users/kolya/Documents/Github/bbPress-permalinks-with-id/plugin/: Is a directory

    Модератор Yuri

    (@yube)

    Сорри, упустил из виду, что у вас директории. Жесткие линки можно делать только на файлы.

    Да. На файл у меня получилось сделать ln.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «__FILE__ в файле, который лежит на сервере через folder alias» закрыта для новых ответов.