从 PHP 执行 shell 命令

Posted

技术标签:

【中文标题】从 PHP 执行 shell 命令【英文标题】:Execute shell command from PHP 【发布时间】:2014-04-21 13:36:21 【问题描述】:

我想从 php 代码运行一些命令。当我从终端运行代码时,它可以正常工作而不会出错。但是当我从 php 代码运行相同的命令时,它会给我这样的错误:

/usr/bin/php: /opt/lampp/lib/libxml2.so.2: version `LIBXML2_2.9.0' not found (required by /usr/bin/php)

我运行命令:locate libxml2.so,该命令给出如下输出:

/opt/lampp/lib/libxml2.so
/opt/lampp/lib/libxml2.so.2
/opt/lampp/lib/libxml2.so.2.8.0
/usr/lib/i386-linux-gnu/libxml2.so
/usr/lib/i386-linux-gnu/libxml2.so.2
/usr/lib/i386-linux-gnu/libxml2.so.2.9.0

所以,似乎已经安装了 2.9.0 版本。那么,如何在没有这个错误的情况下执行命令呢?

【问题讨论】:

【参考方案1】:

使用shell_exec 函数来执行它。 试试<?php echo shell_exec('locate libxml2.so');

【讨论】:

这也给了我与我粘贴的问题相同的输出。 啊,我不明白你的意思。你应该修复你的 php.ini 配置,或者使用cp /opt/lampp/lib/libxml2.so.2 /opt/lampp/lib/libxml2.so.2.old && rm /opt/lampp/lib/libxml2.so.2 && ln -s /usr/lib/i386-linux-gnu/libxml2.so.2 /opt/lampp/lib/libxml2.so.2 禁用意味着??你能详细解释一下吗? @SavanKoradia 我更新了我之前的评论,你能看一下吗? 您好,但现在它给了我错误:/usr/bin/php:重定位错误:/usr/bin/php:符号 X509_free,版本 OPENSSL_1.0.0 未在文件 libcrypto.so.1.0 中定义.0 与链接时间参考【参考方案2】:

我终于成功了。安装phpcs(或任何你想通过xampp的apache执行的模块)然后安装在xampp的“bin”中。

【讨论】:

以上是关于从 PHP 执行 shell 命令的主要内容,如果未能解决你的问题,请参考以下文章

从PHP执行PhantomJS

shell脚本--php执行shell命令

关于php运行shell命令问题

从带有滚动的命令行 PHP 执行“less”

php执行shell不阻塞方法

PHP exec() 通过浏览器执行时不会执行 shell 命令