我想直接使用命令行执行一个PHP语句,如if(function_exists("my_func")) echo 'function exists';,而不必使用单独的PHP文件。这怎么可能呢?
if(function_exists("my_func")) echo 'function exists';
vsdwdz231#
**如果你打算在命令行中使用PHP,我建议你安装phpsh, a decent PHP shell。**它更有趣。
无论如何,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";'
上面的PHP命令应该输出no和返回0,正如你所看到的:
no
0
>>> php -r 'echo function_exists("foo") ? "yes" : "no";' no >>> echo $? # print the return value of the previous command 0
另一个有趣的开关是php -a:
-a Run as interactive shell
与phpsh相比,它有点蹩脚,但如果你不想安装the awesome interactive shell for PHP made by Facebook to get tab completion, history, and so on,那么使用-a**:
>>> php -a Interactive shell php > echo function_exists("foo") ? "yes" : "no"; no
如果它不工作在您的机器上像我的机器es(测试在Ubuntu和Arch Linux),那么可能你的PHP设置是模糊或损坏。如果运行此命令:
php -i | grep 'API'
你应该看到:
Server API => Command Line Interface
如果您没有,这意味着可能另一个命令将提供CLI SAPI。试试php-php;可能是你操作系统中的一个包或命令。如果您确实看到您的php命令使用CLI(命令行界面)SAPI(服务器API),则运行php -h | grep code以**找出哪个疯狂的开关-因为这一年没有改变-**允许在您的版本/设置中运行代码。
php -h | grep code
另外几个例子,只是为了确保它在我的盒子上工作:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' no >>> php -r 'echo function_exists("print_r") ? "yes" : "no";' yes
另外,请注意,扩展可能加载在CLI中,而不是CGI或Apache SAPI中。可能有几个PHP SAP使用不同的php.ini文件,例如/etc/php/cli/php.ini与/etc/php/cgi/php.ini与/etc/php/apache/php.ini在Gentoo Linux盒子上。找出php -i | grep ini使用的ini文件。
/etc/php/cli/php.ini
/etc/php/cgi/php.ini
/etc/php/apache/php.ini
php -i | grep ini
9jyewag02#
Using PHP from the command line在Windows上使用-r的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:语法错误,意外的文件结尾,应为“;'或','在命令行代码第1行”)。
abithluo3#
您可以用途:
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
短标签“<?
echo '<?= function_exists("foo") ? "yes" : "no";' | php echo '<?= 8+7+9 ;' | php
结束语“?>”是可选的,但不要忘记最后“;“!
v1l68za44#
通过Windows命令运行PHP shell:
php -a
它将在Windows中打开下面的PHP shell,我正在测试一个简单的square_val()函数:
square_val()
function square_val($num, $pow){ return $num**$pow; }
上面的代码已经过测试。要测试上面的代码是否有效,请使用echo square_val(4, 2);,然后使用echo square_val(4, 0.5);。
echo square_val(4, 2);
echo square_val(4, 0.5);
70gysomp5#
在命令行上:
php -i | grep sourceguardian
如果它在那里,那么你会得到一些文本。如果没有,你什么也得不到。
xmakbtuz6#
如果你正在使用Laravel,你可以使用php artisan tinker来获得一个惊人的交互式shell来与你的Laravel应用交互。然而,Tinker在引擎盖下使用“Pysh”,这是a popular PHP REPL,即使你没有使用Laravel(纯PHP),你也可以使用它:
php artisan tinker
// 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/
例如:
6条答案
按热度按时间vsdwdz231#
**如果你打算在命令行中使用PHP,我建议你安装phpsh, a decent PHP shell。**它更有趣。
无论如何,
php
命令提供了两个开关来从命令行执行代码:可以这样使用
php
的**-r开关**:上面的PHP命令应该输出
no
和返回0
,正如你所看到的:另一个有趣的开关是php -a:
与phpsh相比,它有点蹩脚,但如果你不想安装the awesome interactive shell for PHP made by Facebook to get tab completion, history, and so on,那么使用-a**:
如果它不工作在您的机器上像我的机器es(测试在Ubuntu和Arch Linux),那么可能你的PHP设置是模糊或损坏。如果运行此命令:
你应该看到:
如果您没有,这意味着可能另一个命令将提供CLI SAPI。试试php-php;可能是你操作系统中的一个包或命令。
如果您确实看到您的
php
命令使用CLI(命令行界面)SAPI(服务器API),则运行php -h | grep code
以**找出哪个疯狂的开关-因为这一年没有改变-**允许在您的版本/设置中运行代码。另外几个例子,只是为了确保它在我的盒子上工作:
另外,请注意,扩展可能加载在CLI中,而不是CGI或Apache SAPI中。可能有几个PHP SAP使用不同的php.ini文件,例如
/etc/php/cli/php.ini
与/etc/php/cgi/php.ini
与/etc/php/apache/php.ini
在Gentoo Linux盒子上。找出php -i | grep ini
使用的ini文件。9jyewag02#
Using PHP from the command line
在Windows上使用
-r
的CLI版本时,请使用"
而不是'
:正确
错误
不要忘记关闭行的提示符(否则,结果是 “PHP Parse error:语法错误,意外的文件结尾,应为“;'或','在命令行代码第1行”)。
abithluo3#
您可以用途:
短标签“<?
结束语“?>”是可选的,但不要忘记最后“;“!
v1l68za44#
通过Windows命令运行PHP shell:
它将在Windows中打开下面的PHP shell,我正在测试一个简单的
square_val()
函数:上面的代码已经过测试。
要测试上面的代码是否有效,请使用
echo square_val(4, 2);
,然后使用echo square_val(4, 0.5);
。70gysomp5#
在命令行上:
如果它在那里,那么你会得到一些文本。如果没有,你什么也得不到。
xmakbtuz6#
如果你正在使用Laravel,你可以使用
php artisan tinker
来获得一个惊人的交互式shell来与你的Laravel应用交互。然而,Tinker在引擎盖下使用“Pysh”,这是a popular PHP REPL,即使你没有使用Laravel(纯PHP),你也可以使用它:我非常喜欢Psysh的一个很棒的特性是,它提供了一种从命令行直接查找PHP文档的快速方法。要让它工作,你只需要采取以下简单的步骤:
然后获取所需的PHP文档数据库并将其移动到正确的位置:
例如: