smarty-php / smarty

Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
Other
2.22k stars 701 forks source link

Fatal error: Uncaught --> Smarty: Unable to write file [file_path] thrown in C:\[project_path]\vendor\smarty\smarty\src\Smarty.php on line 1732 #1018

Open rodriguezny opened 1 month ago

rodriguezny commented 1 month ago

We are facing this issue in the project Tiki Wiki CMS only for windows users. The following error is thrown: Fatal error: Uncaught --> Smarty: unable to write file C:\xampp\htdocs\tiki\temp\templates_c\en_basic^f4976e02395559add3c9bc302b01cf84441c25a1_0.extends_layout_view.tpl|tiki-show_page.tpl.php <-- thrown in C:\xampp\htdocs\tiki1\tiki\vendor_bundled\vendor\smarty\smarty\src\Smarty.php on line 1724

I took a look in the file smarty/smarty/src/Smarty.php from line 1697 and found some comments and an if{} close related to Windows which is supposed to handle windows case, but it seems it doesn't solve windows issue. We already tried to set the directory permission recursively to 777 but the error still persists. Thanks!

wisskid commented 1 month ago

I suppose the | character in the filename that is illegal on Windows. I noticed it today in another issue too.

rodriguezny commented 1 month ago

I suppose the | character in the filename that is illegal on Windows. I noticed it today in another issue too.

But the | character comes from the template inheritance when extending resource type.

wisskid commented 1 month ago

Yes, I didn't mean to say it was your fault. I suppose the |-character was somehow encoded in v4 and we "simplified" that a bit too much in v5. The unit tests didn't catch it since they always run on Linux.

rodriguezny commented 1 month ago

Yes, I didn't mean to say it was your fault. I suppose the |-character was somehow encoded in v4 and we "simplified" that a bit too much in v5. The unit tests didn't catch it since they always run on Linux.

Ok, I understand. So do we have to wait for the fix ?

wisskid commented 1 month ago

Yes, but maybe you can help me find the source of the bug? I noticed that the filenames have indeed changed between v4 and v5:

rodriguezny commented 1 month ago

Yes, but maybe you can help me find the source of the bug? I noticed that the filenames have indeed changed between v4 and v5:

  • In v4, \ExtendsResourceTest::testCompileBlockIncreaseInChild_050 results in a compiled template named "./tests/UnitTests/ResourceTests/Extends/templates_c/210f746458dbb237333807da8d80ff53a837985c_0.extends.050_grandchild.tpl.php".
  • In v5, it's "./tests/UnitTests/ResourceTests/Extends/templates_c/0a382e517fefa510de3f987160291ed9924a7124_0.extends_050_parent.tpl|050_child.tpl|050_grandchild.tpl.php".

Ok, I'll try to find the source of the bug. Sorry for answering later.