![在 Ubuntu 中从源代码安装 php5 时出现问题](https://linux22.com/image/799396/%E5%9C%A8%20Ubuntu%20%E4%B8%AD%E4%BB%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E5%AE%89%E8%A3%85%20php5%20%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
(最初在这里问:https://stackoverflow.com/questions/14977119/problems-installing-php5-from-source-in-ubuntu)
我已经尝试安装 php5 一段时间了。
我在用着。
Ubuntu 12.10
Apache 2.4.3
我想要安装的 php 版本是:
PHP 5.4.11
我按照网页上的文档进行操作。
我安装了 Apache(将 apr 和 apr-util 文件夹放入 ./scrlib 之后,正如文档所述)。
sudo ./configure --enable-so
sudo make
sudo make install
所有这些命令都会输出大量信息,但据我所知,没有错误或警告。
仅供记录:
/usr/local/apache2/bin/httpd -l
Compiled in modules:
core.c
mod_so.c
http_core.c
event.c
mod_so.c 在那里,所以我认为安装没有问题。
现在,我尝试安装 PHP(在
.sudo ./configure \
--prefix=/home/usr/local/php5/ \
--with-mysql \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-xsl \
--with-gdbm \
--with-gd \
--with-freetype=/usr/include/freetype2/ \
--with-zlib-dir=/usr/include \
--with-ttf \
--with-jpeg-dir=/usr/lib
除以下警告外,一切顺利:
configure: WARNING: unrecognized options: --with-freetype, --with-ttf
但是,这些选项并不是我最大的问题,我会遵循下一步。
sudo make
这些是输出的最后几行。
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
invertedregexiterator.inc
pharcommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
clicommand.inc
phar.inc
Build complete.
Don't forget to run 'make test'.
下一步。
sudo make install
一切似乎都很好。
sudo cp php.ini-development /usr/local/lib/php.ini
我编辑了 conf 文件 (/usr/local/apache2/conf/httpd.conf)。行...
LoadModule php5_module modules/libphp5.so
...已经在那里了。就在那一行下面我添加:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
我重新启动了apache:
sudo service apache2 restart
因此,php5应该已经安装好了。我在php中编写了以下脚本。
// info.php
<?php
phpinfo();
?>
并将其保存在/var/www/info.php中
我在浏览器中输入了以下 URL:
http://127.0.0.1/info.php
没有输出。
在原始问题中,一位用户要求我检查错误日志(在 /var/log/apache2/ 中)。
如果我浏览我的 info.php 文件,则 error.log 中唯一添加的新行是
[Wed Feb 20 19:49:01 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
然后他们让我在 php.ini 中设置 display_errors = On。屏幕上什么也没显示。
最后他们让我在终端中运行 php -i。输出如下:
The program 'php' is currently not installed. You can install it by typing: sudo apt-get install php5-cli
我遗漏了什么?我不使用 apt-get install php5 的原因是我想要配置文件中设置的所有选项。第一个让我遇到问题的是我没有数据库的 gdbm 处理程序。如果您知道我可以使用 apt-get install php5 然后以某种方式将这个新选项添加到 php5 的方法,那么我也认为这是一个解决方案。
答案1
我在这里看到了两个问题,但我怀疑您所遇到的问题比您发布的内容中看到的还要多。
您之所以在终端上收到该消息php is not installed
,是因为php
二进制文件不在您的默认搜索路径中。
根据你--configure
的 php 所在的位置/home/usr/local/php5
(我个人觉得这是一个奇怪的位置)。现在,如果你只是php
在 CLI 上输入,bash 将不会在此目录中检查可执行文件,因此你必须使用完整路径运行它。它应该是我想的php
那样。/home/usr/local/php5/bin/php
如果您希望只需输入即可默认使用它php
,请先执行此操作ln -s /home/usr/local/php5/bin/php /bin/php
。然后,如果您输入,Bash 应该能够自行找到它php
。
另一个问题是您使用的configure
参数根本不存在。您可以在 php 源目录中configure
执行以下命令来查看可用的参数。./configure --help
我忘了一点:要验证 php 模块是否已在 apache 中加载,您可以使用 apache 的 mod_info。它会告诉您哪些模块已成功加载。如果您在 mod_info 输出中看到 PHP 模块未加载,那么您可能应该在启动时检查 apaches 的输出。http://httpd.apache.org/docs/2.0/mod/mod_info.html