① linux c++ 拷貝文件問題
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
/*********************************************************************
功能:復制文件
參數:pSrc,原文件名
pDes,目標文件名
返回:<0,失敗
>0,成功
作者:
*********************************************************************/
#define BUF_SIZE 256
int File(const char * pSrc,const char *pDes)
{
FILE *in_file, *out_file;
char data[BUF_SIZE];
size_t bytes_in, bytes_out;
long len = 0;
if ( (in_file = fopen(pSrc, "rb")) == NULL )
{
perror(pSrc);
return -2;
}
if ( (out_file = fopen(pDes, "wb")) == NULL )
{
perror(pDes);
return -3;
}
while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0 )
{
bytes_out = fwrite(data, 1, bytes_in, out_file);
if ( bytes_in != bytes_out )
{
perror("Fatal write error.\n");
return -4;
}
len += bytes_out;
printf("ing file .... %d bytes \n", len);
}
fclose(in_file);
fclose(out_file);
return 1;
}
/*********************************************************************
功能:復制(非空)目錄
參數:pSrc,原目錄名
pDes,目標目錄名
返回:<0,失敗
>0,成功
作者:
*********************************************************************/
int Dir(const char * pSrc,const char *pDes)
{
if (NULL == pSrc || NULL == pDes) return -1;
mkdir(pDes);
char dir[MAX_PATH] = {0};
char srcFileName[MAX_PATH] = {0};
char desFileName[MAX_PATH] = {0};
char *str = "\\*.*";
strcpy(dir,pSrc);
strcat(dir,str);
//首先查找dir中符合要求的文件
long hFile;
_finddata_t fileinfo;
if ((hFile = _findfirst(dir,&fileinfo)) != -1)
{
do
{
strcpy(srcFileName,pSrc);
strcat(srcFileName,"\\");
strcat(srcFileName,fileinfo.name);
strcpy(desFileName,pDes);
strcat(desFileName,"\\");
strcat(desFileName,fileinfo.name);
//檢查是不是目錄
//如果不是目錄,則進行處理文件夾下面的文件
if (!(fileinfo.attrib & _A_SUBDIR))
{
File(srcFileName,desFileName);
}
else//處理目錄,遞歸調用
{
if ( strcmp(fileinfo.name, "." ) != 0 && strcmp(fileinfo.name, ".." ) != 0 )
{
Dir(srcFileName,desFileName);
}
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
return 1;
}
return -3;
}
② 請教一個關於linux下APACHE關於python的設置問題
二、linux下apache配置python
一.安裝apache
apache linux平台下載
Apache v2.4.3 for Unix下載
界面預覽
軟體大小:7.90MB
軟體類別:國外軟體 | web伺服器
軟體語言:英文
運行環境:Unix
軟體授權:免費版
更新時間:2012-8-22 9:52:17
相關鏈接:Home Page
python linux平台下載
Python v2.5.1 For Linux 下載
界面預覽
軟體大小:10.55MB
軟體類別:國產軟體 | 開發編程
軟體語言:簡體中文
運行環境:Linux
軟體授權:免費版
更新時間:2007-4-25 21:41:00
相關鏈接:Home Page
mod_python下載: http://archive.apache.org/dist/httpd/modpython/
解壓後進入目錄:例如把apache安裝到/home/wwwroot/apache下,執行如下命令:
./configure --prefix=/home/wwwroot/apache --enable-track-vars --enable-cgi --with-config-file-path=/opt/apache/conf --enable-moles=all --enable-mods-shared=all --enable-file-cache --enable-disk-cache --enable-cache --enable-mem-cache --enable-mpio --enable-logio --enable-mime-magic --enable-headers --enable-usertrack --enable-version --enable-ssl --enable-http --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ftp --enable-proxy-ajp --enable-proxy-balancer --enable-so
執行:
make && make install
然後,打開httpd.conf進行apache相關配置
二.安裝python
$ tar –jxvf Python-2.5.2.tar.bz2
$ cd Python-2.5.2
$ ./configure
$ make
$ make install
我的python安裝目錄是 /usr/local/lib/python2.5.2/
三.安裝mod_python(請用root許可權執行)
解壓後進入目錄,執行如下命令(這個命令分別指定了apache和python的目錄):
./configure --with-apxs=/home/dantezhu/apache/bin/apxs --with-python=/usr/local/bin/python
執行:
make
會在/usr/local/lib/python2.6/site-packages/下生成一個mod_python目錄
同時在./src/.libs/下生成了一個mod_python.so,將這個so拷貝到apache的moles目錄,並在httpd.conf中加入
LoadMole python_mole moles/mod_python.so
四.測試
1)在httpd.conf中加入
<Directory "/home/dantezhu/apache/py">
AllowOverride FileInfo
AddHandler mod_python .py
PythonHandler index
PythonDebug On
Order allow,deny
Allow from all
</Directory>
同時在
<IfMole alias_mole>
</IfMole>
加入
ScriptAlias /py/ "/home/dantezhu/apache/py/"
2)在apache目錄下建立一個py目錄,在裡面新建一個文件index.py,內容如下:
from mod_python import apache
def handler(req):
req.write("Hello World!")
return apache.OK
(注意:PythonHandler index ,這里的名字index決定必須用index.py來測試)
③ linux 安裝包有php fileinfo擴展嗎
如果php安裝沒問題的話,我記得安裝這些擴展要用到 phpize 吧 在memcache安裝文件目錄 /usr/bin/phpize 你改變目錄就改變 ./configure --with-php-config=/usr/bin/php-config 安裝 如果文件位置有變動,你自己慢慢找你的安裝目錄吧
④ 請教python在linux下如何遍歷最新目錄
importos
deffindlastdir(root):
returnos.path.join(
root,
sorted([
path
forpathinos.listdir(root)
ifos.path.isdir(path)
])[-1]
)
defgetfileinfo(fullname):
path,filename=os.path.split(fullname)
(mode,ino,dev,nlink,
uid,gid,size,atime,mtime,ctime)=os.stat(fullname)
returndict(
path=path,
filename=filename,
modifytime=mtime,
createtime=ctime,
size=size,
)
last_1stlevel=findlastdir('datasource')
last_2ndlevel=findlastdir(last_1stlevel)
files=[
os.path.join(last_2ndlevel,x)
forxinos.listdir(last_2ndlevel)
]
fileinfos=map(getfileinfo,files)
#nextblockjustforviewresult
importpprint
pprint.pprint(fileinfos)
⑤ 欲在Linux系統下使用終端編寫C語言程序,打算使用findfirst()、findnext()和fin
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
int
main(int argc, char *argv[])
{
intptr_t handle;
struct _finddata_t fileinfo;
handle = _findfirst("D:\\mymtom\\src\\demo\\*.c", &fileinfo);
if (handle == -1) {
perror("_findfirst");
exit(1);
}
printf("%s\n",fileinfo.name);
while (_findnext(handle, &fileinfo) == 0) {
printf("%s\n",fileinfo.name);
}
_findclose(handle);
return 0;
}
⑥ 如何在linux下安裝多個不同版本的PHP
Linux下部署php多版本共存
背景說明
自php7問世,身為最新版本控的我馬上升級體驗,但是由於伺服器上還有舊程序在運行,只好部署一個php多版本共存環境。
現有環境是lnmp
- CentOS 6.7
- nginx 1.10.1
- mariadb-10.0.26
- php 7.0.8
為了更好兼容舊的php程序,推薦使用5.4.45. 主要是兼容mysql擴展。
開始安裝
首先要下載php-5.4.45.tar.gz源碼包。
通過源碼安裝
# tar xzvf php-5.4.45.tar.gz
# cd php-5.4.45
# ./configure --prefix=/usr/local/php54 --with-config-file-path=/usr/local/php54/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-intl --with-xsl
# make ZEND_EXTRA_LIBS='-liconv'
# make install
# cp php.ini-proction /usr/local/php/etc/php.ini
------------------------------------------------------------------------------------------------
php.ini 配置
post_max_size = 50M
upload_max_filesize = 50M
date.timezone = PRC
short_open_tag = On
cgi.fix_pathinfo=0
max_execution_time = 300
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
------------------------------------------------------------------------------------------------
php-fpm.conf 配置
------------------------------
# vim /usr/local/php/etc/php-fpm.conf1
[global]
pid = /usr/local/php54/var/run/php-fpm.pid
error_log = /usr/local/php54/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php54-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
----------------------------------------------------------------------------------
啟動 php-fpm
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php54-fpm
# chmod +x /etc/init.d/php54-fpm
# /etc/init.d/php54-fpm start
-------------------------------------------------------------------------------------------
修改nginx配置,對需要的服務配置使用php-5.4.45
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php54-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
----------------------------------------------------------------------------------------
配置php-5.4.45 的php54-fpm 開機自動啟動
# chkconfig --add php54-fpm
# chkconfig php54-fpm on
⑦ 如何在linux下安裝composer
請參考
http://jingyan..com/article/a65957f4d23de824e77f9b70.html
如何在Linux上安裝Composer
1、檢查系統需求
Apache/Nginx
MySQL
PHP 5.5.9+
Composer
PHP擴展:OpenSSL、 PDO、Mbstring、Tokenizer、Fileinfo、GD(2.0+)/Imagick(6.5.7+)
系統滿足上述需求後才能繼續進行安裝。
2、使用Composer安裝項目和依賴
在web根目錄下運行以下命令:
composer create-project pyrocms/pyrocms=3.0-beta1 --prefer-source
注意在Windows系統中這里我們不能使用--prefer-dist選項進行安裝,否則會報錯:
[ErrorException]
ZipArchive::extractTo(): No such file or directory
註:使用--prefer-source選項會強制克隆源代碼,而不是像--prefer-dist那樣強制下載git引用的壓縮包。
Composer使用PHP的ZipArchive擴展壓縮文件,使用--prefer-dist安裝在Windows系統上存在一個問題:如果路徑大於256個字元或者包含.會拋出上述錯誤異常,進而導致Composer不能繼續往下運行。Linux上則不存在這個問題。
安裝完成後,如果是在Linux環境需要配置storage、public/assets、bootstrap/cache目錄的可寫許可權。
如果你覺得Composer安裝麻煩還可以使用學院提供的一鍵安裝包:PyroCMS 3.0測試版一鍵安裝包。
⑧ 文件遍歷中if (strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) 是什麼意思
文件名不等於 「." && 文件名不等於 ".."
. 表示當前目錄
.. 表示當前目錄的父目錄
在 linux 下你用 ls -a 就能看到這兩個目錄
⑨ 如何在linux安裝php開發環境
我一般會選用源碼安裝 php,安裝 php 的過程指定要安裝的擴展,但是避免不了缺少某個擴展未安裝導致程序運行報錯的問題。以 fileinfo 為例,介紹一下怎麼添加 php 擴展。
1. 准備
通常遇到報錯:xxx function undefined,而這個函數是系統函數的話,那一定是你缺少某個擴展。添加擴展也非常簡單。首選要確認當前的 php 是哪個版本,不同版本的 php 擴展會有些許出入。然後找到 Php 源碼目錄,也就是從網上下載下來並且解壓的 php 文件包。添加擴展的時候需要在源碼包裡面去執行命令。
2. 安裝 fileinfo 擴展
1. 確認 php 版本
php -v
# PHP 7.4.4 (cli)
2. 找到 php 可執行文件的位置
whereis php
# php: /usr/local/php /usr/local/php/bin/php
可以看出 php 執行文件在 /usr/local/php/bin 目錄裡面
那麼嘗試執行 phpize,保證這個文件存在,phpize 命令在添加擴展的時候需要用到
/usr/local/php/bin/phpize -v
# Configuring for:
# PHP Api Version: 20190902
# Zend Mole Api No: 20190902
# Zend Extension Api No: 320190902
3.進入php源碼目錄
我的習慣是網路下載的軟體會放在 /usr/local/src 下面,
cd /usr/local/src/php-7.4.4
cd /etc
cd fileinfo
擴展都在源碼目錄的 etc 下面,裡面有 curl,gd,ftp 等等擴展目錄,我要安裝 fileinfo,所以到 fileinfo 目錄裡面
4.開始安裝
確定目錄下面有 config.m4 文件,如果沒有,應該會有 config0.m4 文件,把 config0.m4 復制一份為 config.m4,如果沒有這個文件,會報錯:can not found config.m4
/usr/local/php/bin/phpize
./configure
make && make install
如果這幾行命令運行下來都沒有報錯,那麼說明擴展文件已經生成,並且已經自動移入相應位置。接下來就是修改 php.ini,追加 extension=fileinfo.so 到 php.ini 中。
5.修改php.ini,載入擴展文件
查看 php.ini 的位置
php -i | grep php.ini
#Configuration File (php.ini) Path => /usr/local/php/etc
#Loaded Configuration File => /usr/local/php/etc/php.ini
可以看到 php.ini 的位置: /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.ini
#添加extension=fileinfo.so,保存
php -m | grep fileinfo
#fileinfo
看到輸出 fileinfo,至此,fileinfo 擴展安裝完畢!另外可以使用 pecl 命令安裝,更方便快捷!