php - PHP 7.3.2 shell_exec 输出突然停止工作
问题描述
我要疯了,我有一个PHP文件来定位我网络上的其他树莓派计算机,我可以通过这个文件直接连接,这工作得很好,但突然无缘无故停止工作,我不能似乎知道为什么。
我正在使用Nginx,最近将我的 PHP 升级到PHP 7.3.19-1~deb10u1 (cli)(构建时间:2020 年 7 月 5 日,使用 sudo apt install 升级。
PHP
<a class='myButton' id="scan" href='scan.php' target='_self'>SCAN NETWORK</a>
</center>
<p></p>
<?php
$output = shell_exec("sudo arp-scan --localnet | awk '/b8:27:/ { print $1 }'");
$output = shell_exec("sudo arp-scan --localnet | awk '/dc:a6:/ { print $1 }'");
$a = explode(PHP_EOL, $output);
foreach ($a as $b) {if ($b != " " and !empty($b)) { echo '<div class="col2" id="col2"> <a id="scan" href="http://' . $b . '/web/" target="_parent"><img id="logo" src="http://' . $b . '/led/assets/logo.png?t=" . time();"> </a></div>' ; echo "<br /> <a class='myButton' href='http://$b/led/numbers/1.php'>1</a> <a class='myButton' href='http://$b/led/numbers/2.php'>2</a> <a class='myButton' href='http://$b/led/numbers/3.php'>3</a> <a class='myButton' href='http://$b/led/numbers/4.php'>4</a> <a class='myButton' href='http://$b/led/numbers/5.php'>5</a> <a class='myButton' href='http://$b/led/numbers/6.php'>6</a> "; }}
?>
我为所有需要的命令授予了visudo权限。
www-data ALL=NOPASSWD: /usr/bin/sudo
www-data ALL=NOPASSWD: /usr/bin/print
www-data ALL=NOPASSWD: /usr/bin/awk
www-data ALL=NOPASSWD: /usr/sbin/arp-scan
www-data ALL=NOPASSWD: /usr/bin/php
www-data ALL=NOPASSWD: /usr/sbin/php-fpm7.3
我还检查了我的php.ini文件,看看是否有任何更改,但文件仍然保持不变。
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
有人可以为我提供有关如何解决此问题的想法吗?
解决方案
没关系 PHP 7.3.19-1~deb10u1 (cli) 上确实发生了一些变化,我通过将代码绑定到一行来解决了这个问题。
<?php
$output = shell_exec("sudo arp-scan --localnet | awk '/dc:a6:/ { print $1 }' && sudo arp-scan --localnet | awk '/b8:27:/ { print $1 }'");
$a = explode(PHP_EOL, $output);
foreach ($a as $b) {if ($b != " " and !empty($b)) { echo '<div class="col2" id="col2"> <a id="scan" href="http://' . $b . '/web/" target="_parent"><img id="logo" src="http://' . $b . '/led/assets/logo.png?t=" . time();"> </a></div>' ; echo "<br /> <a class='myButton' href='http://$b/led/numbers/1.php'>1</a> <a class='myButton' href='http://$b/led/numbers/2.php'>2</a> <a class='myButton' href='http://$b/led/numbers/3.php'>3</a> <a class='myButton' href='http://$b/led/numbers/4.php'>4</a> <a class='myButton' href='http://$b/led/numbers/5.php'>5</a> <a class='myButton' href='http://$b/led/numbers/6.php'>6</a> "; }}
?>
有趣的部分是在其中一个树莓派上,我没有升级 PHP 版本,以前的代码仍然可以正常工作。
推荐阅读
- javascript - 单击多个元素相同的类名
- python - 在循环中在python中传递多个参数
- php - 如何在symfony中显示数组关系ManyToMany
- java - VS 中的发布模式和调试模式
- reactjs - 通过 react-helmet 添加脚本标签时如何忽略 TypeScript 错误?
- javascript - 正则表达式检查具有最小值和最大值的总位数
- yii2 - 使用 Cloudflare 背后的 Yii2 访问规则来限制 ips 的操作
- laravel - 分组后计数错误
- xml - MS Access xml删除父子关系中的外键
- python - .add_subplot(nrows, ncols, index) 如何工作?