ホームページ >バックエンド開発 >PHPチュートリアル >php を使用して Linux システム上の APK 情報を取得する、linuxapk_PHP チュートリアル
私は現在 APK モールを構築していますが、ユーザーが APK をアップロードした後、システムは APK 情報 (パッケージ名、バージョン番号など) を自動的に読み取る必要があります。バックグラウンド言語は php で、apk 情報を読み取るためにシステムの aapt コマンドを呼び出す必要があります。 Linux システムに aapt をインストールする方法は次のとおりです。
1. aapt と apktool を /usr/bin/ にコピーします
2. aapt を実行してエラーを報告します:
-bash: /usr/bin/aapt: /lib/ld-linux.so.2: bad ELF インタープリター: そのようなファイルまたはディレクトリはありません
解決策: 必要なファイルがどのパッケージに含まれているかを確認してください
yum whatprovides */ld-linux.so.2
glibc-2.12-1.132.el6_5.1.i686 をインストールするように選択してください
yum - y install glibc-2.12-1.132.el6_5.1.i686
依存関係があることを示すプロンプトが表示されたら、--skip-broken
3 を実行します:
yum install glibc.i686
この時点で、 aapt、まだエラーが発生します
aapt: 共有ライブラリのロード中にエラーが発生しました: libz.so.1: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
解決策: 上記と同じ
yum whatprovides */libz.so.1 - -skip-broken
パッケージバージョンの競合がある場合に実行します:yum install zlib
4、この時点でエラーが報告されます
aapt: 共有ライブラリのロード中にエラーが発生しました: libstdc++.so.6: 共有オブジェクトファイルを開けません: そのようなファイルまたはディレクトリはありません
解決策:
yum whatprovides */libstdc++.so .6
yum -y install libstdc++-4.4.7-4.el6.i686
Conflict
yum -y install libstdc*
yum -y install libstdc++ -4.4.7-4.el6.i686
今回は基本的にOKです
aapt ソフトウェア パッケージのダウンロード アドレス: http://pan.baidu.com/s/1pJkEqcb
//ネットワークカードのMACアドレスの元のコードを取得します
class GetMacAddr{
var $return_array = array(); // MACアドレスを含む文字列配列を返します。
var $mac_addr;
function GetMacAddr($os_type){
switch (strto lower($os_type) ){
case "linux":
$this->forLinux();
case "solaris":
ブレーク;
ケース "unix":
ブレーク;
$this->forWindows()
}
$temp_array = array(); ( $this->return_array as $value ){
if (
preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][ 0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][: -]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value,
$temp_array ){
$this->mac_addr = $temp_array[0];
ブレーク
}
}
return $this->mac_addr;
function forWindows()
@exec("ipconfig /...残りのテキスト>>
Linuxシステムで解凍するにはphpコードを使用してください。中国語のファイルは解凍できませんが、他のファイルは解凍できます。
ファイル名が中国語の場合は、他の人に嫌悪感を与えないでください。サーバーの基本原則は、中国語のファイル名が表示されてはならないということです。
Linux でのファイル名の一般的なデフォルトのエンコーディングは UTF-8 であるためです。ただし、多くの場合、圧縮パッケージ内のファイル名は、現在のシステムの IO 文字エンコーディングです。さらに、ファイルを解凍して書き込む場合、多くのソフトウェアではファイル名のエンコード変換が提供されません。
その結果、何か問題が発生します。
ここで、現在のエンコーディングを使用してファイルを再圧縮することができます。もちろん、Windows のエンコーディングは UTF8 ではなく、Linux のみにすることができます。または、英語バージョンを使用してみることもできます (言語パックを使用して変更することはできません)。英語に変換する場合は、純粋な英語バージョンである必要があります)。それ以外の場合は、ファイル名エンコード設定をサポートする圧縮プロトコルを使用して再圧縮しますが、どのようなサポートが利用可能かはわかりません。
最後の方法は、自分で解凍コードを記述し、コード内でファイル名を取得して自分で変換することです。