我试图在Linux上安装一个PECL包,但安装程序永远不会超过configuration阶段。
我的托pipe服务提供商在/ var / tmp上安装了一个文件系统,以防止文件执行,并导致这个错误:
root@host [/usr/local/apache/conf/includes]# pecl install pdo downloading PDO-1.0.3.tgz ... Starting to download PDO-1.0.3.tgz (52,613 bytes) .............done: 52,613 bytes 12 source files, building running: phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 building in /var/tmp/pear-build-root/PDO-1.0.3 running: /root/tmp/pear/PDO/configure checking for egrep... grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking for C compiler default output file name... a.out checking whether the C compiler works... configure: error: cannot run C compiled programs. If you meant to cross compile, use `--host'. See `config.log' for more details. ERROR: `/root/tmp/pear/PDO/configure' failed
我99%确定问题是你不能在/ var / tmp中执行文件(我在这里复制了一个可执行文件,并试图validation)。 我确定我可以让PECL完成,如果我在其他地方完成它的构build工作,但是我找不到合适的configuration设置。
你如何告诉PECLbuild立一个非默认文件夹?
哇,你为什么要从PECL安装PDO? 自从5.1版本以来,PDO已经被内置到了PHP中。 你正在运行5.0吗?
如果您运行的是5.1或更高版本,并且缺少PDO,则可能是:
如果是1,则需要从头重新编译PHP,或只编译共享模块并将其复制到正确的位置。
如果是2,则只需要安装操作系统的PDO扩展。 在RHEL和CentOS下,尝试yum search php-pdo
。 我不知道为其他发行版调用软件包安装程序的正确语法,但是软件包几乎肯定会包含字符串“php-pdo”。 (提示:如果你从你的操作系统中获得了PHP,他们也可能会提供普通的PECL包,请尝试在他们的仓库中搜索“pecl”)。
最后,如果你正在运行5.0 …为了这个世界上所有的好,升级! 首先阅读PHP手册中的升级说明 ,以防万一您偶然使用旧的行为。
(另外,要重新配置pecl,请尝试使用pecl config-show
来查看可用的设置,然后使用pecl config-set ...
来更改设置。 不要尝试为PHP版本5.0以上的版本安装PDO扩展.x,它会中断 ,PECL站点的PDO页面顶部还有一个很大的胖框。)
上面的答案可以帮助用户,但不会遇到/ tmp目录中的“noexec”问题。
这是如何pecl安装[程序]失败时,“配置错误无法运行C编译的程序”,因为你不能执行/ tmp目录中的东西:
先打开exec选项重新安装/ tmp目录:mount -o,remount,rw,exec / tmp
其次,安装pecl扩展:pecl install [扩展名]
第三,一旦你完成了,你应该把它设置回'noexec':mount -o,remount,rw,noexec / tmp
在我的情况下,/ tmp是noexec,/ var是可执行的。
main10:~# mv /tmp/pear /var/tmp main10:~# ln -s /var/tmp/pear /tmp/pear
它解决了这个问题。