我想在命令行中直接执行一个单独的PHP语句,例如
if(function_exists("my_func")) echo 'function exists';
,而无需使用单独的PHP文件。这是否可能?if(function_exists("my_func")) echo 'function exists';
,而无需使用单独的PHP文件。这是否可能?php
命令提供了两个开关来执行命令行代码:-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
您可以使用php
的-r开关,如下所示:
php -r 'echo function_exists("foo") ? "yes" : "no";'
no
并且返回 0
,如下所示:>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
-a Run as interactive shell
相对于phpsh,它有些过时了,但如果您不想安装由Facebook制作的令人惊叹的交互式PHP shell,可获得tab completion、history等功能, 那么可以使用-a:
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
php -i | grep 'API'
您应该看到:
Server API => Command Line Interface
php -h | grep code
来查找哪个疯狂的开关-因为这已经没变过了-允许在你的版本/设置中运行代码。>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
/etc/php/cli/php.ini
和/etc/php/cgi/php.ini
和/etc/php/apache/php.ini
。使用php -i | grep ini
命令查找正在使用哪个ini文件。php -a
命令。我已经添加了一张图片并在下面写了一个答案。 - user15393375在 Windows 上使用 CLI 版本的 -r
参数时,请使用 "
而不是 '
:
php -r "echo 1;"
php -r 'echo 1;'
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1
不要忘记分号来结束行(否则将出现"PHP Parse error: syntax error, unexpected end of file, expecting ';' or ',' in Command line code on line 1"的错误信息)。
您可以使用:
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
php -r
命令,相较于这个7年前的被接受答案来说似乎更加麻烦。不需要担心PHP标签的打开关闭。 - miken32在命令行中:
php -i | grep sourceguardian
.php
文件中?”的问题? - trejderphp artisan tinker
来获取一个令人惊叹的交互式 shell,与你的 Laravel 应用程序进行交互。然而,Tinker 在幕后使用的是 "Psysh",它是 一种流行的 PHP REPL,即使你不使用 Laravel(裸 PHP),你也可以使用它。// Bare PHP:
>>> preg_match("/hell/", "hello");
=> 1
// Laravel Stuff:
>>> Str::slug("How to get the job done?!!?!", "_");
=> "how_to_get_the_job_done"
我非常喜欢 Psysh 的一个很棒的功能,它可以直接从命令行快速查找 PHP 文档。要让它工作,您只需要执行以下简单步骤:
apt install php-sqlite3
然后获取所需的PHP文档数据库并将其移动到正确的位置:
wget http://psysh.org/manual/en/php_manual.sqlite
mkdir -p /usr/local/share/psysh/ && mv php_manual.sqlite /usr/local/share/psysh/
现在举个例子: