【问题标题】:Execute shell command from PHP从 PHP 执行 shell 命令
【发布时间】: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 版本。那么,如何在没有这个错误的情况下执行命令呢?

【问题讨论】:

    标签: php linux shell xampp libxml2


    【解决方案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”中。

    【讨论】: