对于潜在的n00b问题提前道歉,我试图在我的OSX Mountain Lion机器上安装PHP的mcrypt扩展。 terminal中的以下步骤是我到目前为止完成我的PHP安装 cd /path/to/downloaded/php-5.3.21/ext/mcrypt/ /usr/bin/phpize ./configure cd /path/to/downloaded/php-5.3.21 ./configure –with-config-file-path=/private/etc/php.ini –with-apxs2=/usr/sbin/apxs make sudo make install 这似乎工作正常,安装PHP 5.3.21罚款。 我已经完成了 sudo nano /private/etc/php.ini 并包括在内 extension=mcrypt.so 随着Apache重新启动,phpinfo()不显示mcrypt扩展加载。 然后,我试图在php.ini中指定extension_dir,再次没有运气。 我已经做好了 locate mcrypt.so /opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so /usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so 并尝试两个目录作为extension_dir,没有运气。 经过多次Googlesearch之后,我也尝试了以下方法 ./configure –with-config-file-path=/private/etc/php.ini –with-apxs2=/usr/sbin/apxs –with-mcrypt 这似乎工作确定,但随后“make”,它返回 ext/mcrypt/mcrypt.o: No such file or directory ext/mcrypt/mcrypt_filter.o: No such file or directory 再次,没有成功。 我究竟做错了什么? 好像mcrypt.so的物理编译没有发生,或者是编译不正确,因为我怀疑有另一个mcrypt.sofind下find? 任何人请帮忙? […]
什么是一个很好的方法来转换hex颜色值,如#ffffff到单个RGB值255 255 255使用PHP?
我有一个简单的联系表格的网站。 validation是有点微不足道的,因为它不会进入数据库; 只是电子邮件。 表格是这样工作的: 有5个领域 – 其中4个是必需的。 提交被禁用,直到4个字段有效,然后您可以提交。 然后再次在服务器上validation一切,包括recaptcha(这不是我客户端validation的)。 整个过程使用ajax完成,并且有多个testing必须在服务器端传递,或返回4 **头,并调用失败callback处理程序。 一切都像在桌面上的Chrome浏览器(我还没有尝试其他浏览器,但我无法想象为什么他们会有所不同),但在iPhone上reCaptcha总是validation,即使我不勾选框考试。 换句话说,我仍然需要正确填写四个值才能提交,但如果我没有选中reCaptcha的方框,请求仍然成功。 如果有人认为这会有帮助,我可以发布一些代码,但问题出在设备上而不是代码上。 有没有人有任何见解? 注意 :如果这有帮助的话,服务器端是PHP / Apache。 更新date:5/28/2015 我仍然在debugging这个,但它似乎像移动Safari浏览器忽略我的iPhone响应头。 当我输出对页面的响应,我得到的桌面上(data,status,xhr)是: data : 我的回应,在这一点上只是说错误或成功 – > error status : error xhr : {'error',400,'error'} 在移动Safari浏览器: data : error status : success xhr : {'error',200,'success'} 所以 – 它似乎只是忽略我的响应头。 我试着明确地设置{"headers":{"cache-control":"no-cache"}}但是无济于事。 更新:6/3/2015 每个请求,这里是代码。 这几乎肯定比你需要的多。 它也变得更加钝了,因为我已经做了修改和修改。 还要注意的是,虽然看起来有些variables还没有被定义,但是(应该)已经在其他文件中定义了。 The client […]
我需要从强制的PHP脚本上下文中调用一个可执行文件。 性能和安全性方面,最好不要在Web服务器进程和可执行文件之间调用一个shell。 当然,我在网上search,没有成功(在这样的PHP环境下)。 许多其他语言允许并清楚地logging。 唉,反引号, exec() , shell_exec() , passthru() , system() , proc_open() , popen()调用一个shell。 而pcntl_fork()似乎不可用。 如何testing一个函数是否调用一个shell。 这是在Debian 6 64bit上用PHP 5.3.3-7 + squeeze15testing的。 testing代码在http://pastebin.com/y4C7MeJz 为了得到一个有意义的testing,我使用了一个技巧,就是要求执行一个不能作为可执行文件使用的shell命令。 一个很好的例子是umask 。 任何返回类似0022的函数都被称为shell。 exec() , shell_exec() , passthru() , system() , proc_open()都做了。 请参阅http://pastebin.com/RBcBz02F上的详细结果。 pcntl_fork失败 现在,回到目标:如何执行任意程序而不启动shell? PHP的exec执行预期的数组string参数,而不是一个唯一的string。 但pcntl_fork只是停止请求,甚至没有日志。 编辑:pcntl_fork失败是因为服务器使用Apache的mod_php,请参阅http://www.php.net/manual/en/function.pcntl-fork.php#49949 。 编辑:添加popen()到@hakrebuild议之后的testing。 任何暗示赞赏。
在我看来,他们有相同的function设置,但我不知道。 两者在function上有什么不同?
我想知道如何用Zend_Test编写PHPUnittesting,一般用PHP编写。
我对testing世界相当陌生,我想确保自己走在正确的道路上。 我正在尝试使用phpunit在symfony2项目中设置unit testing。 PHPUnit正在工作,简单的默认控制器testing工作正常。 (然而,这不是关于functiontesting,而是unit testing我的应用程序。) 尽pipe我的项目很大程度上依赖于数据库交互,而据我所知,从phpunit的文档中 ,我应该build立一个基于\PHPUnit_Extensions_Database_TestCase ,然后为我的数据库创build灯具,并从那里工作。 然而, symfony2只提供了一个WebTestCase类,它只能从\PHPUnit_Framework_TestCase开箱即用。 那么我是否应该假设我应该创build自己的DataBaseTestCase ,它主要复制WebTestCase ,区别在于它从\PHPUnit_Extensions_Database_TestCase扩展并实现了它的所有抽象方法? 还是有另一个“内置的” symfony2推荐的工作stream程涉及到数据库为中心的testing? 因为我想确保我的模型存储和检索正确的数据,所以我不希望最后偶然地检验教义的细节。
我想确保我所知道的关于UTF-8的所有信息都是正确的。 我一直在尝试使用UTF-8,但是我一直在越来越多的bug和其他奇怪的事情上磕磕绊绊,这使得几乎不可能拥有100%的UTF-8站点。 我似乎错过了一个地方。 也许这里有人可以纠正我的名单或确定它,所以我不会错过任何重要的东西。 数据库 每个网站都必须在那里存储数据。 不pipe你的PHP设置是什么,你都必须configuration数据库。 如果你不能访问configuration文件,那么一旦连接,一定要确保“ SET NAMES'utf8' ”。 另外,请确保在所有表上使用utf8_ unicode_ ci 。 这假设MySQL为一个数据库,你将不得不改变其他人。 正则expression式 我做了很多正则expression式比你的普通searchreplace更复杂 。 我必须记住使用“/ u”修饰符,以便PCRE不会破坏我的string 。 然而,即使如此, 显然还是有问题的 。 string函数 所有的默认string函数(strlen(),strpos()等)都应该用看字符而不是字节的多字节string函数replace。 头文件你应该确保你的服务器为浏览器返回了正确的头文件,以便知道你正在尝试使用什么样的charset(就像你必须告诉MySQL一样)。 header('Content-Type:text / html; charset = utf-8'); 将正确的<meta>标签放在页头中也是一个好主意。 虽然实际的标题将会覆盖这个,如果他们不同。 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 问题 当页面加载时,我是否需要将从用户代理(HTML表单的&URI)接收的所有内容转换为UTF-8,或者如果我可以保留原有的string/值,仍然可以通过这些函数运行而不会出现问题? 如果我确实需要将所有内容都转换为UTF-8,那么我应该采取哪些步骤? mb_detect_encoding似乎是为此而构build的,但是我一直在看到人们抱怨说,它并不总是工作。 mb_check_encoding也似乎有一个问题,从一个畸形的人告诉一个良好的UTF-8string。 PHP根据所使用的编码(像文件types)将内存中的string不同地存储在内存中,还是像常规的一些字符一样被存储为不同的字符(如&amp; vs&in HTML)。 chazomaticus回答这个问题: 在PHP中(至多PHP5),string只是字节序列。 没有暗示或明确的字符集与他们相关联; 这是程序员必须跟踪的东西。 如果一个非UTF-8string给一个mb_ *函数会导致一个问题? 如果一个UTFstring编码不正确会出问题(像正则expression式中的parsing错误?),还是会标记一个实体为坏(html)? 有没有机会,不正确编码的string将导致函数返回FALSE,因为string是坏的? […]
我正在使用这个发送文件给用户 header('Content-type: application/zip'); header('Content-Length: ' . filesize($file)); header('Content-Disposition: attachment; filename="file.zip"'); readfile($file); 我想在用户下载后删除这个文件,我该怎么做? 编辑:我的情况就是这样,当用户点击下载button,我的脚本将创build一个临时的zip文件,用户下载它,然后该临时zip文件将被删除。 编辑2:确定最好的办法似乎运行一个小时清理临时文件的cron作业。 编辑3:我testing我的脚本unlink ,它的工作,除非用户取消下载。 如果用户取消下载,则zip文件保留在服务器上。 所以现在已经足够了。 🙂 编辑4:哇! connection_aborted()取得了诀窍! ignore_user_abort(true); if (connection_aborted()) { unlink($f); } 即使用户取消下载,也会删除该文件。
我正在使用Debian挤压服务器。 我已经使用aptitude install php-pear安装了PEAR。 这创build了一个目录/usr/share/php/PEAR 。 我安装了包括Phing在内的一些PEAR软件包。 我使用pear install –alldeps phing/phing安装了Phing文件,文件显示在/usr/share/php/phing 。 但是不应该将PEAR包(通常情况下)放在/usr/share/php/PEAR ? 当我跑步 pear config-get php_dir 我得到“ /usr/share/php ”。 我有东西configuration错了吗?