Evaluation of PHP code
mattsches opened this issue · 3 comments
I'm struggling to evaluate PHP code. I suppose the correct command would be php -r
or php --run
.
---
patat:
eval:
php:
command: php -r
fragment: true
replace: false
wrap: code
...
# PHP Example
```php
$foo = get_defined_constants();
results in:
# PHP Example
$foo = get_defined_constants();
php -r : exit code 1
Error in argument 1, char 2: no argument for option r
This is probably because of command line variable substitution done by shell as mentioned in the note here (scroll down to the -r --run
option).
Unfortunately, my shell foo is not strong enough to resolve this in the context of patat (or on the command line). Any ideas?
There's probably many ways to do this... One solution would be to wrap the input (cat -
) in <? ... ?>
and pipe that to PHP:
---
patat:
eval:
php:
command: '(echo "<?"; cat -; echo "?>") | php'
...
# Hello world
Some PHP:
```php
print("Hello, world!");
```
Sorry, it's not working for me. The output is:
# Code Example
print("Hello, world!");
<?
print("Hello, world!");?>
I wonder if there's a way to replace double quotes with single quotes like so: php -r '$foo = get_defined_constants(); var_dump($foo);'
? I can't find a way to achieve this.
It's probably not even a patat
issue, but more of a general bash issue I guess.
I figured out that my PHP installation has disabled the short_open_tags
setting (which is the default nowadays, I guess, but am not sure), so this now works for me:
---
patat:
eval:
php:
command: '(echo "<?php"; cat -; echo "?>") | php'
...
# Hello world
Some PHP:
```php
print("Hello, world!");
Thanks a lot for your support! 😄