想了解xslt–Ubuntu:安装php5-xsl包时出错的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于ubuntu安装php环境的相关问题,此外,我们还将为您介绍关于PHP-需要在xsl
想了解xslt – Ubuntu:安装php5-xsl包时出错的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于ubuntu安装php环境的相关问题,此外,我们还将为您介绍关于PHP-需要在xsl / xslt的帮助下将重复的XML节点放在单独的节点中、Ubuntu 14 – Nginx – PHP5-fpm:安装phpmyadmin但403禁止访问、ubuntu 16 无法安装php5.6、ubuntu 16.04 编译安装php5.4的新知识。
本文目录一览:- xslt – Ubuntu:安装php5-xsl包时出错(ubuntu安装php环境)
- PHP-需要在xsl / xslt的帮助下将重复的XML节点放在单独的节点中
- Ubuntu 14 – Nginx – PHP5-fpm:安装phpmyadmin但403禁止访问
- ubuntu 16 无法安装php5.6
- ubuntu 16.04 编译安装php5.4
xslt – Ubuntu:安装php5-xsl包时出错(ubuntu安装php环境)
我的语法:
sudo apt-get install PHP5-xsl
错误信息:
W: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/p/PHP5/PHP5-xsl_5.2.6-2ubuntu4.1_i386.deb 404 Not Found
解决方法
sudo apt-get update
PHP-需要在xsl / xslt的帮助下将重复的XML节点放在单独的节点中
我有这个xml:
<products>
<product>
<name>ad</name>
<category>something</category>
<path>something</path>
<size>S</size>
<color-code>87-3</color-code>
<size-code>24294</size-code>
<size-qty>10</size-qty>
<size-codeproducer>5902228002604</size-codeproducer>
<size>M</size>
<color-code>87-4</color-code>
<size-code>24295</size-code>
<size-qty>64</size-qty>
<size-codeproducer>5902228002611</size-codeproducer>
<size>L</size>
<color-code>87-5</color-code>
<size-code>24296</size-code>
<size-qty>46</size-qty>
<size-codeproducer>5902228002628</size-codeproducer>
<size>XXL</size>
<color-code>87-7</color-code>
<size-code>24298</size-code>
<size-qty>0</size-qty>
<size-codeproducer>5902228002635</size-codeproducer>
<imgs>
<img>pictures/large/7/8/87_2.jpg</img>
<img>pictures/large/7/8/87_1.jpg</img>
<img>pictures/large/7/8/87_4.jpg</img>
<img>pictures/large/7/8/87_5.jpg</img>
<img>pictures/large/7/8/87_3.jpg</img>
<img>pictures/large/7/8/87_6.jpg</img>
</imgs>google.com</url>
<price>7.98</price>
<brand>NIKE</brand>
<color>black</color>
<gender>Man</gender>
</product>
<product>
...
...
...
</product>
</products>
我需要的:
<products>
<product>
<name>ad</name>
<category>something</category>
...
<variation>
<size>S</size>
<color-code>87-3</color-code>
<size-code>24294</size-code>
<size-qty>10</size-qty>
<size-codeproducer>5902228002604</size-codeproducer>
</variation>
<variation>
<size>M</size>
<color-code>87-4</color-code>
<size-code>24295</size-code>
<size-qty>64</size-qty>
<size-codeproducer>5902228002611</size-codeproducer>
</variation>
<variation>
<size>L</size>
<color-code>87-5</color-code>
<size-code>24296</size-code>
<size-qty>46</size-qty>
<size-codeproducer>5902228002628</size-codeproducer>
</variation>
<variation>
<size>XXL</size>
<color-code>87-7</color-code>
<size-code>24298</size-code>
<size-qty>0</size-qty>
<size-codeproducer>5902228002635</size-codeproducer>
</variation>
</product>
<product>
...
</product>
</products>
我有这个xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/products/product">
<xsl:copy>
<xsl:copy-of select="description|id|name|category|path"/>
<xsl:for-each select="/products/product/size">
<variation>
<xsl:variable name="occur" select="position()"/>
<xsl:copy-of select="."/>
<xsl:copy-of select="/products/product/color-code[$occur]"/>
<xsl:copy-of select="/products/product/size-code[$occur]"/>
<xsl:copy-of select="/products/product/size-qty[$occur]"/>
<xsl:copy-of select="/products/product/size-codeproducer[$occur]"/>
</variation>
</xsl:for-each>
<xsl:copy-of select="imgs|url|price|brand|color|gender"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
结果是复制的xml文件
每个产品节点中的size-codeproducer,color-code,size-code和size-qty.
任何帮助,将不胜感激.
我尝试了xsl复制的各种变体-for-each循环和其他功能,但是大多数解析后都没有打印任何内容,没有打印相同的文档,或者还有其他问题.我猜问题出在我正在使用的路径(xpaths?)上.
解决方法:
首先,您的xsl:for-each有问题…
<xsl:for-each select="/products/product/size">
通过以代表文档节点的/开头的选择表达式,您实际上在进行绝对搜索,而忽略了当前位于的产品.您只需执行此操作即可获取当前产品的尺寸元素
<xsl:for-each select="size">
同样,对于各种xsl:copy-of语句,请不要这样做…
<xsl:copy-of select="/products/product/color-code[$occur]"/>
您应该这样做(..获取当前size元素的父元素)
<xsl:copy-of select="../color-code[$occur]"/>
试试这个模板
<xsl:template match="/products/product">
<xsl:copy>
<xsl:copy-of select="description|id|name|category|path"/>
<xsl:for-each select="size">
<variation>
<xsl:variable name="occur" select="position()"/>
<xsl:copy-of select="."/>
<xsl:copy-of select="../color-code[$occur]"/>
<xsl:copy-of select="../size-code[$occur]"/>
<xsl:copy-of select="../size-qty[$occur]"/>
<xsl:copy-of select="../size-codeproducer[$occur]"/>
</variation>
</xsl:for-each>
<xsl:copy-of select="imgs|url|price|brand|color|gender"/>
</xsl:copy>
</xsl:template>
(请注意,您也可以在此处执行< xsl:copy-of select =“ following-sibling :: color-code [1]” /> ;,对于其他语句也是如此).
Ubuntu 14 – Nginx – PHP5-fpm:安装phpmyadmin但403禁止访问
Nginx和PHP5-FPM安装并运行良好……
#我可以访问http://www.example.com和http://www.example.com/info.php
$ls -la /var/www/html
-rw-r--r-- 1 root root 868 Nov 1 08:16 index.html
-rw-r--r-- 1 root root 21 Nov 1 08:13 info.PHP
我安装了PHPmyadmin并为PHPmyadmin文件创建了一个符号链接
lrwxrwxrwx 1 root root 21 Nov 1 08:37 PHPmyadmin -> /usr/share/PHPmyadmin
但试图得到http://www.example.com/phpmyadmin =>我得到了一个403 Forbidden
使用符号链接,我不应该将与PHPmyadmin相关的任何内容添加到我的Nginx.conf中……可能会丢失什么?
更新1:将index.PHP添加到uri会带来登录面板
http://www.example.com/PHPmyadmin/index.PHP
我应该添加到我的默认con文件中直接获取它…我想我的try文件无效..
这是我的默认Nginx站点con文件
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.PHP,index.html index.htm;
server_name example.com;
location / {
try_files $uri $uri/ index.html index.PHP =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.PHP${
try_files $uri =404;
fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
fastcgi_pass unix:/var/run/PHP5-fpm.sock;
fastcgi_index index.PHP;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location /PHPmyadmin {
index index.PHP;
}
ubuntu 16 无法安装php5.6
这是怎么回事啊
ubuntu 16.04 编译安装php5.4
以下所有命令我都是在root下进行的,所以没有sudo
1、下载PHP5.4源码,http://cn2.php.net/distributions/php-5.4.45.tar.gz
2、安装必须的包
apt-get install gcc libxml2-devel make automake autoconf libtool bison flex
3、tar -zxvf PHP-5.4.45.tar.gz
清除原来的配置
./buildconf –force
建立新的配置
./configure --prefix=/usr/share/PHP5.4--with-config-file-path=/etc/PHP/5.4 --with-curl --with-pear --with-gd--with-jpeg-dir --with-png-dir --with-zlib --with-xpm-dir --with-freetype-dir--with-mcrypt --with-mhash --with-MysqL --with-MysqLi --enable-pdo--with-pdo-MysqL --with-openssl --with-xmlrpc --with-xsl --with-gettext--with-fpm-user=www-data --with-fpm-group=www-data --enable-fpm --enable-exif--enable-wddx --enable-zip --enable-bcmath -with-bz2 --enable-calendar--enable-ftp --enable-mbstring --enable-soap --enable-sockets --enable-shmop--enable-dba --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-debug--enable-maintainer-zts --enable-embed
注:--prefix=为PHP的安装目录
编译
make
编译安装
make install
编译过程假如失败
make clean
在编译过程中缺少的一些其他的包可以通过apt-get install的方式自行安装,百度一下基本都没太大问题,
以下2个错误比较蛋疼,这里记录一下
错误 Cannot find OpenSSL's <evp.h>
安装下面包
apt-get install libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libMysqLclient-dev libpq-dev libicu-dev libfreetype6-dev libldap2-dev libxslt-dev
apt-get install libssl-dev libsslcommon2-dev
错误:configure: error: libXpm.(a|so) not found.
安装下面的包
apt-get install libxpm-dev
如果还是如下错误:
configure: error: libXpm.(a|so) not found.
不是你缺少东西了,输入如下命令帮编译程序找到相关文件!
cd /usr/lib/
64位的OS
ln -s /usr/lib/x86_64-linux-gnu/libXpm.a
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so.4
ln -s /usr/lib/x86_64-linux-gnu/libXpm.so.4.11.0
32位的OS
ln -s /usr/lib/i386-linux-gnu/libXpm.a
ln -s /usr/lib/i386-linux-gnu/libXpm.so
ln -s /usr/lib/i386-linux-gnu/libXpm.so.4
ln -s /usr/lib/i386-linux-gnu/libXpm.so.4.11.0
错误:cp: cannot stat `sapi/cli/PHP.1′: No such file or directory
重新开始,貌似是PHP的一个bug,https://bugs.PHP.net/bug.PHP?id=67888
安装完毕记得要把安装目录下的etc/PHP.ini下的文件复制到/etc/PHP/5.4/PHP.ini这里,方便以后修改配置
mkdir /etc/PHP/5.4 cp /usr/share/PHP5.4/etc/PHP.ini /etc/PHP/5.4/
我因为是和Nginx一起使用,所以使用PHP-fpm的形式加载PHP,蛋疼的问题又出现一个,比如PHP5.4及以后的PHP-fpm不支持命令行的形式restart或者reload,但是发现可以通过kill -USR2的信号来实现reload,所以自己写了一个命令来实现reload
ps -ef | grep PHP-fpm | grep master | cut -c 9-15 | xargs kill -USR2可以把这个命令保存在文件里执行,别忘了#!/bin/bash 并且注意添加执行权限
对于编译安装的PHP在安装扩展上比较蛋疼,目前PHP扩展有3种形式,
第一种PHP内置了,在编译PHP的时候./configure的时候带上就可以了,大家可以看PHP的官方文档上有介绍,具体的参数官方文档上都有
第二种通过pear或者pecl安装,pear或者pecl在PHP的安装目录的bin目录下,包括PHP-config还有PHPize,PHP-config在安装某些扩展的时候会提示没有找到PHP-config文件,
可以通过--with-PHP-config=/usr/share/PHP5.4/bin/PHP-config 参数来执行PHP-config的位置,
第三种就是扩展的源码编译了,扩展的源码编译主要使用PHPize,以下以xdebug为主示范一下,
下载xdebug源码:https://xdebug.org/files/xdebug-2.4.1.tgz
因为能适配PHP5.4的最高的xdebug只有2.4.1所以就下载2.4.1的
wget https://xdebug.org/files/xdebug-2.4.1.tgz解压缩
tar -xvzf xdebug-2.3.2.tgz
进入源码目录
cd xdebug-2.3.2源码解释
/usr/share/PHP5.4/bin/PHPize假如输出
Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525代表成功了
然后
./configure这一步会提示
Cannot find PHP-config. Please use --with-PHP-config=PATH
使用--with-PHP-config参数
./configure --with-PHP-config=/usr/share/PHP5.4/bin/PHP-config这回一次成功
最后make 和make install
最后不要忘记修改PHP.ini文件
关于xslt – Ubuntu:安装php5-xsl包时出错和ubuntu安装php环境的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于PHP-需要在xsl / xslt的帮助下将重复的XML节点放在单独的节点中、Ubuntu 14 – Nginx – PHP5-fpm:安装phpmyadmin但403禁止访问、ubuntu 16 无法安装php5.6、ubuntu 16.04 编译安装php5.4的相关知识,请在本站寻找。
本文标签: