theseer / phpdox

Documentation generator for PHP Code using standard technology (SRC, DOCBLOCK, XML and XSLT)
http://phpdox.de
Other
601 stars 121 forks source link

DirectoryCleaner has problem with rmdir #402

Open ogmueller opened 4 years ago

ogmueller commented 4 years ago

Somehow phpdox is not able to execute anymore since changing to PHP 7.4.x

PHP Version: 7.4.3 (Linux)
PHPDox Version: 0.12.0
ErrorException: E_WARNING
Location: phar:///usr/local/src/phive/phars/phpdox-0.12.0.phar/phpdox/shared/DirectoryCleaner.php (Line 32)

rmdir(/var/lib/jenkins/workspace/project/build/api/.): Invalid argument

No stacktrace available
ogmueller commented 4 years ago

This configuration was working previously:

<build engine="html" enabled="true" output="./">
    <template dir="${phpDox.home}/templates/html"/>
    <file extension="xhtml"/>
</build>

but now is producing the warning described above.

Removing the dot and changing the path to "/" is doing the trick:

<build engine="html" enabled="true" output="/">

Though I think the above config should work and the output path "/" (root) feels uncomfortable.

theseer commented 4 years ago

Apart from the fact that crashing is obviously the wrong way to deal with a problem - and an interesting bug with regards to a different PHP version I do not yet understand -, I'm not sure I understand the configuration value itself.

Why would you use ./ as the output path instead of an actually named directory, potentially relative to the configuration file? And what's the expected difference to .?

And, lastly, why would / work? Unless you run asrootyou shouldn't even have write permissions to/`, let alone want to have it cleaned...?

ogmueller commented 4 years ago

I am not certain how this config has been created, but as far as I experienced, the output path is relative to the generator path. So a "/" is not root, even though it feels like it is, but rather the generator path itself, which was the goal in the first place, I assume.