Я хочу включить в свой шаблон php-файл. Но иногда файл php не существует. Пытаюсь проверить функцией "file_exists", но не работает.
{if file_exists("`$plugin`/button.php")}
{include_php "`$plugin`/button.php"}
{/if}
Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:/home/user/www/site/template/template.tpl" on line 456 "{include_php "
$plugin/button.php"}" {include_php} file '/button.php' is not readable <-- thrown in /home/user/www/site/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 456
Есть ли способ проверить, существует ли файл php?
@Andreas Я использую имя папки в переменной $ plugin, оно работает нормально в пути к файлу
it works ok in file path но в вопросе вы пишете but it doesn't work.. Что он?
@Andreas, он хорошо работает, если файл существует :) Но я хочу проверить, существует ли файл, потому что есть фатальная ошибка, если файл не существует
Уверены, что ошибка возникает не из-за того, что переменная $ plugin пуста или не задана?
Есть какие-нибудь комментарии по этому поводу?
@Andreas да, вы правы - в данном случае это пустой var .. Но проблема в другом - как мне проверить файл, чтобы защитить скрипт от фатальной ошибки.






Всегда проверяйте свои переменные, прежде чем пытаться их использовать.
В данном случае это была пустая переменная $ plugin, из-за которой конкатенация строк не удалась.
Если вы сначала убедитесь, что ваши переменные установлены, затем, если это правда, проверьте, существует ли файл, он должен работать, как ожидалось.
{if isset($plugin) && file_exists("`$plugin`/button.php")}
{include_php "$plugin/button.php"}
{/if}
В чистом PHP это должно работать, поскольку, если isset не работает, он даже не будет пытаться file_exist.
Хотя насчет умника не уверен.
Если это не работает, вам нужно сделать отдельный if.
К сожалению, в Smarty это не работает, но спасибо за помощь. Я отредактировал код, и теперь мне больше не нужен include_php. Более того, include_php будет удален в одной из нескольких следующих версий.
Что это: `$ plugin` / button.php - это действительно имя пути к файлу?