小编tox*_*lot的帖子

如何在CentOS上安装PHP intl扩展?

我对安装包几乎一无所知.通过遵循一个非常具体的教程,我设法用yum安装了Zend Framework 1.

现在我需要PHP intl扩展,我无法弄清楚如何安装它.

我做到了

yum list php*intl
Run Code Online (Sandbox Code Playgroud)

并看到有一个可用.所以我做了

yum install php-intl
Run Code Online (Sandbox Code Playgroud)

并收到以下错误消息:

Error: Package: php-intl-5.3.3-14.el6_3.x86_64 (updates)
       Requires: php-common = 5.3.3-14.el6_3
       Installed: php-common-5.3.17-2.el6.remi.x86_64 (@remi)
           php-common = 5.3.17-2.el6.remi
       Available: php-common-5.3.3-3.el6_2.8.x86_64 (base)
           php-common = 5.3.3-3.el6_2.8
       Available: php-common-5.3.3-14.el6_3.x86_64 (updates)
           php-common = 5.3.3-14.el6_3
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
Run Code Online (Sandbox Code Playgroud)

我没有尝试消息中提到的建议,因为我不知道他们会做什么,我害怕破坏某些东西.这是一台生产机器,我没有其他机器可供测试.我试图找到一个与我的PHP版本相同的rpm,但没有运气.

这两个建议做了什么,是否可以安全地尝试?我还可以尝试安装intl扩展程序吗?

php install centos yum php-extension

24
推荐指数
2
解决办法
8万
查看次数

启用严格模式时,MySQL会做什么验证?

当MySQL允许我插入一个NULL用它创建的字段时,我感到非常惊讶NOT NULL.我做了一些研究,发现了如何启用严格模式.但是,我不太清楚MySQL STRICT_ALL_TABLES启用时的验证.

手册说:

严格模式控制MySQL处理无效或缺失的输入值的方式.由于多种原因,值可能无效.(强调我的)例如,它可能具有错误的数据类型,或者它可能超出范围.

我理解它认为缺少什么以及它如何处理.我不清楚它认为无效.我做了一些测试并发现了以下内容:

  • 太长的字符串无效
  • 超出范围的数字无效
  • NULLNULL列的s 无效
  • TRUE并且FALSE似乎总是有效(它们分别变为1和0)
  • 无效日期无效
  • 零日期有效(可以启用其他模式来更改此行为)
  • 整数字段中的浮点数是有效的(它们被舍入)
  • 数字字段中的字母无效

除了上面提到的以外,MySQL是否会进行任何其他验证检查?

手册中说"列的数据类型错误",但我发现实际发挥作用的唯一情况是数字字段中的字母.是否有其他数据类型错误的例子?

是否有一个列表确切地检查MySQL执行的是什么?

编辑:为了记录,我的应用程序已经进行了广泛的验证.我使用严格模式作为最后机会,只是在案例检查.如果我忘记检查某些内容,我希望它快速失败而不是"默默地破坏我的数据".

mysql validation strict

21
推荐指数
1
解决办法
3095
查看次数

拒绝访问特定目录中的特定文件类型

对于某些应用程序,用户可以上传自己的文件.由于这可能是非常大的文件,因此可以通过自己的FTP客户端上传它们.

当然我不希望他们上传一些PHP文件,用它们可以访问服务器上的所有其他文件.我想要阻止此行为的方法之一是拒绝仅在这些文件夹中访问特定文件类型(如php,rb,py等).

我找到了拒绝访问文件夹,文件和文件夹中文件的方法,但没有关于文件夹中文件类型的访问.

我试着结合我发现的东西,比如:

<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)

换到

<Files uploads/ "\.inc$">
Order allow,deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)

或替代方式

RewriteRule ^(\.php) - [F,L,NC] 
Run Code Online (Sandbox Code Playgroud)

RewriteRule ^(uploads/\.php) - [F,L,NC]
Run Code Online (Sandbox Code Playgroud)

但是,我无法找出我应该使用的语法.

所以,例如,我可以有以下(基本示例):

/index.php
/uploads/
  hack.php
  hack.rb
  hack.py
  pony.jpg
Run Code Online (Sandbox Code Playgroud)

我希望hack.php/rb/py不可用,但其他一切都可用.我应该使用什么语法?

directory .htaccess file-type file

18
推荐指数
2
解决办法
3万
查看次数

我应该为git user.name使用什么?

我是Git的新手,之前从未使用过任何VCS.我刚开了一个GitHub账号.我从阅读GitHub帮助页面开始.我在我的本地Windows机器上下载并安装了Git.从那里,我被引导到Pro Git书.在初始设置期间,我使用了正确的法定名称.

我已经做了很多关于Git和GitHub的阅读,最后一点我不记得我在哪里阅读了什么.我以为我在某个地方(但现在找不到)说了我应该使用我的GitHub 用户名作为我的Git user.name.所以现在我不知道该怎么做.

我已阅读此Pro Git页面,其中写道:

$ git config --global user.name"John Doe"

我读过这个GitHub页面说:

$ git config --global user.name"你的名字在这里"

第一个暗示一个人应该使用他们的专有名称,第二个不清楚.但是,GitHub页面还有以下内容:

我们使用电子邮件地址将您的提交与您的GitHub帐户相关联.

我从中得到的是,如果我希望我的提交链接到我的GitHub帐户,user.email很重要.因为它没有说出这个名字,所以我想也许没关系.

那么我应该为我的Git user.name使用什么?

git github

10
推荐指数
1
解决办法
2万
查看次数

ui-helper-hidden-accessible在无序列表中的用途是什么?

根据类名和jQuery UI CSS源ui-helper-hidden-accessible来判断,该类似乎是一种隐藏元素同时仍然可以访问它的方法.

我不明白的是它在这种特殊情况下的用途.我试图搜索SO和谷歌有理由使用这个课程,但没有找到我的答案.

以下是此UI Multiselect小部件生成的HTML的摘录:

<div style="width: 176px;" class="ui-multiselect ui-helper-clearfix ui-widget">
<div style="width: 105px;" class="selected">
    <div class="actions ui-widget-header ui-helper-clearfix">
        <span class="count">0 items selected</span><a href="#" class="remove-all">Remove all</a>
    </div>
    <ul style="height: 270px;" class="selected connected-list ui-sortable">
        <li class="ui-helper-hidden-accessible"></li>
    </ul>
</div>
<div style="width: 69px;" class="available right-column">
    <div class="actions ui-widget-header ui-helper-clearfix">
        <input class="search empty ui-widget-content ui-corner-all" type="text"><a href="#" class="add-all">Add all</a>
    </div>
    <ul style="height: 279px;" class="available connected-list">
        <li class="ui-helper-hidden-accessible"></li>
        <li style="display: block;" class="ui-state-default ui-element ui-draggable" title="3D Animation"><span class="ui-helper-hidden"></span>3D Animation<a href="#" class="action"><span …
Run Code Online (Sandbox Code Playgroud)

accessibility jquery-ui html-lists

8
推荐指数
1
解决办法
1万
查看次数

如何从正确的位置打开COMMIT_EDITMSG?

我是GIT的新手.我几天前从GitHub链接下载了GIT for Windows.我正在使用命令行工具MinGW32.我对默认编辑器不满意,所以我一直在尝试设置我最喜欢的编辑器.

我按照这里的说明使用EditPad Pro作为我的编辑器.但我一直收到以下消息:

Aborting commit due to empty commit message.

EditPad Pro打开一个新实例.MinGW32正在等待,因为在关闭EditPad Pro之前我没有收到中止消息.当编辑器打开时,它会打开一个名为的空白文件COMMIT_EDITMSG.当我关闭编辑器时,文件将保存到repo的主目录中.

我在这个答案中找到了一个线索,特别是这句话:

[Vim]默认将文件保存到.git/COMMIT_EDITMSG

如果我在关闭编辑器之前执行另存为以将文件保存到.git目录,那么它可以正常工作.但是,有两个问题:

  1. 我必须记住另存为
  2. 我没有得到Git默认添加到COMMIT_EDITMSG的有用评论

当前的配置设置为core.editor:

"'D:\Program Files\JGsoft\EditPadPro5\EditPad Pro.exe' //newinstance"
Run Code Online (Sandbox Code Playgroud)

我不确定$*说明书中提到的内容是什么,但我尝试使用和不使用它,以及使用和不使用单/双引号的各种变体.我也尝试在shell脚本中设置值.在最坏的情况下,它根本不起作用(例如,甚至不会打开编辑器),最多只会打开一个空白文件.

如何使用Git在.git目录中创建的文件打开我的编辑器?

编辑:无论我是否使用$*,我得到完全相同的结果,这个答案说它不需要.这个Git Pro页面在解释如何设置外部合并和差异工具时提到了它,但在解释core.editor配置设置时没有提到它.注意:我也试过了%*.

如果$*需要(并且缺少)变量,我认为EditPad Pro将打开一个空白的无标题文件而不是当前目录中的空白COMMIT_EDITMSG文件.问题似乎是路径.

编辑:我做了更多的实验.我的文件路径中有空格,我认为这可能会导致问题.我将我的repo克隆到一个新目录中,名称中没有空格并修复了我的配置变量.它没有解决问题.但我注意到另一个问题.在我的一些测试中,已加载到编辑器中的空白文件已命名$@.

git mingw32

7
推荐指数
1
解决办法
9525
查看次数

检查一个值只包含数字,正则表达式还是否?

我有一个在我的代码中使用的函数.该函数期望传递的参数是正整数.由于PHP是松散类型的,因此数据类型并不重要.但它,它仅仅包含数字很重要.目前,我正在使用正则表达式在继续之前检查值.

这是我的代码的简化版本:

function do_something($company_id) {
    if (preg_match('/\D/', $company_id)) exit('Invalid parameter');
    //do several things that expect $company_id to be an integer
}
Run Code Online (Sandbox Code Playgroud)

我来自Perl背景,往往会经常使用正则表达式.但是,我知道他们的用法是有争议的.

我认为使用intval()(int)迫使 $company_id是一个整数.但是,我最终会得到一些意想不到的值,我希望它快速失败.

另一种选择是:

if (!ctype_digit((string) $company_id)) exit('Invalid parameter');
Run Code Online (Sandbox Code Playgroud)

这种情况是否是正则表达式的有效使用?一种方式优于另一种方式吗?如果是这样,为什么?有没有我没考虑过的陷阱?

php regex validation

6
推荐指数
1
解决办法
5595
查看次数

如何验证PHP中带空格的单字母字符串?

我知道有这个函数ctype_alpha,虽然这个函数会FALSE在字符串包含空格(空格字符)时返回.

我如何允许字母字符和空格,但没有别的?

php regex

5
推荐指数
1
解决办法
3384
查看次数

为什么这个按钮不像其他浏览器那样扩展到Firefox内容的宽度?

这个问题看起来很疯狂,但我想清楚地解释一切.

期望的结果

我有一个带子菜单的水平菜鸟.我是从头开始创建的,所以我没有使用任何现有的框架.它使用按钮,锚点和跨度的组合进行语义标记.

  • 用于转到新页面的项目的锚点
  • 没有任何东西但有子菜单的项目的按钮
  • 跨越残疾人物品

注意:此站点适用于数量有限的特定用户,因此我并不担心缺少可访问性.

子菜单应与其包含的最宽菜单项一样宽.并且每个菜单项应填充子菜单的宽度,以便根据需要显示光标和焦点轮廓.

问题

在Firefox中,子菜单不会扩展到以下方案中最宽项目的宽度:

  • 子菜单绝对定位
  • 子菜单包含在具有静态位置的块中
  • 最长的menuitem是一个按钮

我已经使用Chrome,IE 8,Firefox 12和Firefox 20进行了测试.它可以在Chrome和IE中显示,但在任何一个版本的Firefox中都没有.

我创建了一个缩小版本,包含JavaScript,图像,禁用的项目以及删除的许多菜单项.代码在下面,也在jsFiddle上.这是Firefox 20中的屏幕截图.

带有压扁菜单项的Firefox屏幕截图
注意Section Title项如何被压扁.子菜单仅与Page Titles项目一样宽(带填充).另请注意,这不是顶级子菜单中的问题 - 该菜单扩展到自定义PDF标题的宽度.

节的标题项是按钮.如果我将其更改为锚点,则子菜单会根据需要进行扩展.如果我将按钮CSS更改为删除width: 100%,则子菜单会根据需要进行扩展.但是,比子菜单窄的菜单项不再填充宽度(即使我添加display: block).

以下是上述修复程序如何破坏菜单其他部分的屏幕截图.

带有窄菜单项的Firefox屏幕截图
注意当鼠标悬停在文本外时光标不是指针.是的,我可以通过更改光标来解决这个li问题,但另一个问题是焦点轮廓.我希望焦点轮廓围绕整个菜单项而不仅仅是文本(它是如何工作的width: 100%).

我也试过玩-moz-box-sizing,但仍然没有快乐.

作为一个简单的解决方法,对于这种特殊情况下,我只是增加了一些&nbsp;网页标题,使其更长的时间.但是,当动态创建菜单时,该解决方案将不起作用.

HTML代码(jsFiddle)

<ul id="navAdminMenu">
    <li><a href="#">Companies</a></li
    ><li class="hasSubmenu"><button type="button">Books</button>
        <ul>
            <li><a href="#">Manage Books</a></li
            ><li><a href="#">PDF Profiles</a></li
            ><li class="hasSubmenu"><button type="button">Customize PDF Titles</button> …
Run Code Online (Sandbox Code Playgroud)

html css firefox

5
推荐指数
1
解决办法
1741
查看次数

如果在循环中使用MySQLi预准备语句,何时调用bind_param?

我正在尝试学习如何在MySQLi中使用准备好的语句来插入数据。

即使准备好的语句因有效地重复执行相似的语句而受到赞扬,我似乎也找不到使用MySQLi在循环中执行多个语句的示例。我对以下内容特别困惑

  • bind_param在循环之前还是在循环内部调用
  • 在调用之前还是之后将值分配给我的变量 bind_param

关于准备好的语句的大多数教程都使用PDO。使用PDO,可以将参数值数组传递给它execute,而无需调用bindParam。MySQLi并非如此。

PHP手册mysqli_prepare条目有一个示例,显示了以下操作顺序:

  1. 给变量赋值
  2. 准备陈述
  3. 绑定变量
  4. 执行

从以上判断,我假设我需要在循环中调用bind语句。

但是,PHP手册mysqli_stmt_execute条目有一个示例,显示了以下操作顺序:

  1. 准备陈述
  2. 绑定变量
  3. 给变量赋值
  4. 执行
  5. 给变量赋值
  6. 执行

请注意,此示例未显示的一件事是变量的首次声明位置。我认为传递未声明的变量bind_param会产生通知。我终于弄清楚了我可以传递未定义的变量,因为它们是通过引用传递的。

问题
一个操作顺序是否比另一个操作顺序优先?还是仅取决于您在做什么?彼此之间有麻烦吗?

注意:该代码已经使用MySQLi,并且我不想切换到PDO(现在切换不在此项目范围内)。

php mysql mysqli loops

4
推荐指数
1
解决办法
1301
查看次数

在PHP中写入STDERR的内容在哪里?

我知道如果error_log未设置配置指令,则会将错误发送到SAPI错误记录器.例如,它是Apache中的错误日志或CLI中的stderr.

因此,如果我从命令行运行脚本,则会直接显示错误(除非重定向).如果我从cron运行脚本,则会将错误通过电子邮件发送给cron作业所有者.那么如果我将电子邮件传递给脚本会发生什么?

我刚刚开始编写脚本来处理退回邮件.我已经读过,如果脚本输出任何内容,它将反弹回发件人.我不确定这是应用于所有输出还是仅适用于STDOUT.或者STDERR在CLI中是否等于STDOUT?

如果我将error_log配置指令设置为文件,那么我可以使用trigger_errorerror_log函数安全地输出错误消息而不向发送者发送退回吗?

由于脚本正在处理退回,我真的希望避免回弹给发件人.我想这可能导致无限循环.并且由于错误日志位于另一个目录中,并且路径是在包含文件中设置的,因此在设置配置指令之前,可能会出现远程错误.ini_set('error_log', 'syslog')在脚本的最顶层使用,然后尽快将其更改为我的文件是不是一个好主意?

php error-handling stderr

3
推荐指数
1
解决办法
8266
查看次数