(最初问到这里: 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
所有这些命令都会输出很多信息,但只要我知道,就不会出现错误或警告。
只是为了logging:
/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
然后他们要求我把display_errors = On放在php.ini中。 屏幕上没有显示任何内容。
最后他们问我在terminal上运行php -i。 输出结果如下:
The program 'php' is currently not installed. You can install it by typing: sudo apt-get install php5-cli
我错过了什么? 我不使用apt-get安装php5的原因是因为我想要所有的选项,我把它放在configuration文件中。 给我的问题的第一件事是,我没有数据库的gdbm处理程序。 如果你知道一种方法,我可以使用apt-get安装php5,然后以某种方式将这个新的选项添加到php5,那么我也认为这是一个解决scheme。
我在这里看到两个问题,但是我怀疑你发布的内容比你看到的更多。
之所以在你的terminal,你得到的消息, php is not installed ,是因为php二进制不在您的默认searchpath。
根据你的--configure你的PHP是在/home/usr/local/php5 (我个人觉得这是一个奇怪的位置)。 现在,如果你只是在CLI上inputphp ,bash不会检查这个目录中的php可执行文件,所以你必须运行它的整个path。 它应该是像/home/usr/local/php5/bin/php我想。
如果你想在默认情况下使用它,只要inputphp ,首先执行ln -s /home/usr/local/php5/bin/php /bin/php 。 那么Bash应该能够自己find它,如果你只是inputphp 。
另一个问题是,你正在使用configure参数,根本不存在。 你可以通过执行./configure --help在php的源码目录中看到可用的configure参数。
我忘了:为了validationphp模块是否在apache中加载,你可以使用apache的mod_info。 它告诉你哪些模块已经成功加载。 如果您在mod_info输出中看到PHP模块未加载,那么您应该在启动时检查输出。 http://httpd.apache.org/docs/2.0/mod/mod_info.html