<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Tiger Technologies Blog &#187; Tales From the Support Team</title>
	<atom:link href="http://blog.tigertech.net/category/tales-from-the-support-team/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tigertech.net</link>
	<description>Behind the scenes at tigertech.net</description>
	<pubDate>Thu, 15 May 2008 05:40:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Webmail &#8220;Thread View&#8221; is now a preference</title>
		<link>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/</link>
		<comments>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 20:00:23 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
		
		<category><![CDATA[Tales From the Support Team]]></category>

		<category><![CDATA[Useful Tips]]></category>

		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/</guid>
		<description><![CDATA[One of the features of our new(ish) Webmail system is &#8220;thread view&#8221;. This groups similar messages together based on their &#8220;Subject&#8221; and other headers, which can occasionally be useful if you&#8217;re trying to see all the replies to a particular message and you want them grouped together.
However, thread view has a potential downside: it you [...]]]></description>
			<content:encoded><![CDATA[<p>One of the features of our new(ish) Webmail system is &#8220;thread view&#8221;. This groups similar messages together based on their &#8220;Subject&#8221; and other headers, which can occasionally be useful if you&#8217;re trying to see all the replies to a particular message and you want them grouped together.</p>
<p>However, thread view has a potential downside: it you have several active threads going with several messages each, new messages can sometimes appear on the second page of the incoming mail screens, instead of the first page.</p>
<p>That&#8217;s not a problem if you&#8217;re expecting it. However, since we introduced the new Webmail system, we&#8217;ve had several complaints from customers who accidentally clicked &#8220;Switch to Thread View&#8221; without realizing what it does, then thought some of their incoming mail was missing because they aren&#8217;t used to looking for new mail on other pages. Since thread view is &#8220;remembered&#8221; even after you logout and login again, this caused some people a great deal of heartache.</p>
<p>From our logs, we&#8217;ve found that very few people actually use thread view. Because it seems to cause frequent problems and few people use it, we&#8217;ve made it an optional feature instead of being always enabled.</p>
<p>If (like most people) you don&#8217;t use thread view, you don&#8217;t need to do anything. If do you want to use thread view, it&#8217;s still available: just click &#8220;Preferences&#8221;, then click &#8220;Display Preferences&#8221;, then change &#8220;Show &#8216;Thread View&#8217; Link&#8221; to &#8220;Yes&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oddities with the MySQL &#8220;Table upgrade required&#8221; message</title>
		<link>http://blog.tigertech.net/posts/mysql-table-upgrade-required/</link>
		<comments>http://blog.tigertech.net/posts/mysql-table-upgrade-required/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 22:46:55 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
		
		<category><![CDATA[Tales From the Support Team]]></category>

		<category><![CDATA[Tech Corner]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/mysql-table-upgrade-required/</guid>
		<description><![CDATA[Here&#8217;s an obscure thing we spent some time on today that doesn&#8217;t affect our customers, but might be useful to someone else searching the Internet. The problem was a MySQL database table that, as far as we can tell, worked perfectly&#8230; except that it shows this message when we run CHECK TABLE:
Table upgrade required. Please [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an obscure thing we spent some time on today that doesn&#8217;t affect our customers, but might be useful to someone else searching the Internet. The problem was a MySQL database table that, as far as we can tell, worked perfectly&#8230; except that it shows this message when we run <tt>CHECK TABLE</tt>:</p>
<p><code>Table upgrade required. Please do "REPAIR TABLE `users`" to fix it!</code></p>
<p><span id="more-92"></span></p>
<p>Hmm. Well, that error message seems odd, but what the heck. After making sure there&#8217;s a current backup, let&#8217;s give it a shot:</p>
<pre>
mysql&gt; REPAIR TABLE users;

+---------------------+--------+----------+-----------------------------+
| Table               | Op     | Msg_type | Msg_text                    |
+---------------------+--------+----------+-----------------------------+
| database.users      | repair | status   | Table is already up to date |
+---------------------+--------+----------+-----------------------------+</pre>
<p>And yet, <tt>CHECK TABLE</tt> still says there&#8217;s a problem:</p>
<pre>
mysql&gt; CHECK TABLE users;

+---------------------+-------+----------+-------------------------------------+
| Table               | Op    | Msg_type | Msg_text                            |
+---------------------+-------+----------+-------------------------------------+
| database.users      | check | error    | Table upgrade required. Please do   |
|                     |       |          |  "REPAIR TABLE `users`" to fix it!  |
+---------------------+-------+----------+-------------------------------------+</pre>
<p>Hmmm. We tried every reasonable combination of <tt>REPAIR TABLE</tt> and <tt>myisamchk</tt> options we could think of, but nothing helped. Then we tried unreasonable options, including the frightening <tt>REPAIR TABLE table USE_FRM</tt> option. In our experience <tt>USE_FRM</tt> usually ends up doing the same thing as <tt>DELETE FROM table</tt>, and this time was no exception. (And <strong>that&#8217;s</strong> why you make a backup first.)</p>
<p>Well, let&#8217;s take a look at the table status (with the uninteresting bits removed):</p>
<pre>
mysql&gt; show table status;

+-------+--------+---------+-----+---------------------+
| Name  | Engine | Version | ... | Create_time         |
+-------+--------+---------+-----+---------------------+
| good  | MyISAM |      10 | ... | 2007-06-08 09:44:01 |
| users | MyISAM |       7 | ... | 2005-03-15 12:03:11 |
+-------+--------+---------+-----+---------------------+</pre>
<p>Sure enough, the bad &#8220;users&#8221; table is a different version than a good table that doesn&#8217;t have this problem. And the bad table was created when we were still using MySQL 4.1.x. This table should have been changed when we upgraded to MySQL 5, and it should be possible to fix now. Why on earth won&#8217;t <tt>REPAIR TABLE</tt> fix it?</p>
<p>We puzzled over this for some time, and eventually just decided to reload it from a dump. But here&#8217;s the strange thing: it wouldn&#8217;t reload from the dump, either!</p>
<p><code>ERROR 1060 (42S21) at line 20: Duplicate column name 'user_id'</code></p>
<p>What the heck? So we looked closely at the dump file, and it somehow contains this line:</p>
<p><code>PRIMARY KEY  (user_id,user_id)</code></p>
<p>MySQL thinks this table has a composite (two-column) primary key, but on the same column twice, which doesn&#8217;t make any sense. So we fix the dump to look like this:</p>
<p><code>PRIMARY KEY  (user_id)</code></p>
<p>And everything works perfectly when the table is reloaded.</p>
<p>So if <tt>CHECK TABLE</tt> tells you a table upgrade is required, but <tt>REPAIR TABLE</tt> won&#8217;t fix it, check whether you can actually reload a dump of that table. You might find something unusual and easily fixable in the dump.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/mysql-table-upgrade-required/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Don&#8217;t rely on PHP file upload permissions</title>
		<link>http://blog.tigertech.net/posts/php-upload-permissions/</link>
		<comments>http://blog.tigertech.net/posts/php-upload-permissions/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 04:47:06 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
		
		<category><![CDATA[Tales From the Support Team]]></category>

		<category><![CDATA[Tech Corner]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/php-upload-permissions/</guid>
		<description><![CDATA[If you write your own PHP scripts that allow file uploads, we&#8217;ve discovered an unusual issue that might affect you. The &#8220;permissions&#8221; PHP gives to newly uploaded files aren&#8217;t always the same &#8212; and a recent change to our servers may have altered the permissions your script sees.

PHP gives programmers a way to accept an [...]]]></description>
			<content:encoded><![CDATA[<p>If you write your own PHP scripts that allow file uploads, we&#8217;ve discovered an unusual issue that might affect you. The &#8220;permissions&#8221; PHP gives to newly uploaded files aren&#8217;t always the same &#8212; and a recent change to our servers may have altered the permissions your script sees.</p>
<p><span id="more-75"></span></p>
<p>PHP gives programmers a way to accept an uploaded file, store it in a temporary directory, then move it to a specific location using the <a href="http://www.php.net/move_uploaded_file">move_uploaded_file()</a> command. That&#8217;s all good &#8212; but what <a href="http://en.wikipedia.org/wiki/File_system_permissions">file permissions</a> would you expect the resulting file to get? Most PHP documentation says that temporary files created by PHP will not be world-readable, so they&#8217;ll look like this:</p>
<p><code>0600 (-rw-------)</code></p>
<p>That&#8217;s good security. It makes sure the files can&#8217;t be accessed by Web site visitors, for example, unless the programmer takes additional steps to make that happen.</p>
<p>On many servers, mode 0600 is exactly what you get after using move_uploaded_file(). However, if the initial temporary directory used by PHP is on a different &#8220;file system&#8221; than the final destination, move_uploaded_file() makes a copy of the file instead of moving it. And when it makes a copy, it sets the permissions of the copy to something very different:</p>
<p><code>0644 (-rw-r--r--)</code></p>
<p>Yikes! And since you have no real control over whether there&#8217;s going to be more than one file system involved (it&#8217;s effectively random from the script author&#8217;s point of view), this means <strong>you have no idea whether an uploaded file is going to be world-readable</strong> after using move_uploaded_file(). If you want to make sure it is &#8212; or isn&#8217;t! &#8212; you have to set that yourself, using something like <a href="http://www.php.net/chmod">chmod</a>:</p>
<p><code>chmod ($filename, 0600);</code></p>
<p>Or:</p>
<p><code>chmod ($filename, 0644);</code></p>
<p>There probably aren&#8217;t many widely-used scripts that rely on the default permissions of uploaded files (otherwise the scripts would fail on some servers and work on others, and someone would notice and fix it). So this shouldn&#8217;t be a problem, right?</p>
<p>Well, until recently, most of our servers had their &#8220;temporary directory&#8221; on a different file system (it was actually a &#8220;tmpfs&#8221;). This caused a problem, though: sometimes when a server hadn&#8217;t been restarted for several months, the smaller temporary directory would start to fill up (the directories only get cleaned out when a server is restarted). This made us nervous: what if a temporary directory filled up and ran out of space? So we recently decided to stop putting the temporary directory on a separate file system, setting it to use the standard disk file system after the <a href="/posts/sched-maint-2007-08-11/">scheduled restart last Saturday night</a>. It shouldn&#8217;t really matter where it is, so we didn&#8217;t even bother mentioning it.</p>
<p>But this afternoon, a couple of customers contacted us to let us know their PHP file upload scripts had stopped working. Not being familiar with arcane details of how PHP handles uploaded temporary files, we were extremely puzzled&#8230; until a perusal of the PHP source code revealed the trouble.</p>
<p>Now, what we originally told the customers who had this trouble still stands: regardless of the cause, everyone&#8217;s scripts should explicitly set the mode of any uploaded files if it matters. That&#8217;s the only way to guarantee your script works properly on any server.</p>
<p>However, we value consistency a great deal. You should be able to rely on your scripts continuing to work if it&#8217;s possible for us to make that happen. So we&#8217;ve &#8220;patched&#8221; our versions of PHP (both PHP 4 and PHP 5) to always make move_uploaded_file() act as if the file was copied (giving mode 0644). This should &#8220;fix&#8221; any scripts that were broken by this change, even if you can&#8217;t actually fix the scripts for some reason.</p>
<p>I should mention that this &#8220;solution&#8221; is still too random for our taste. There&#8217;s no guarantee that this behavior is compatible with what you&#8217;d get if you tried another company&#8217;s PHP, for example. What would be better is for PHP itself to make sure the mode is always the same, and for that to be fully documented so PHP users could expect the same behavior on all servers. We&#8217;ve <a href="http://bugs.php.net/bug.php?id=42291">opened a PHP bug suggesting that</a>. If the PHP folks ever see fit to make that change, we&#8217;ll make sure our versions of PHP do what the PHP documentation says, even if it means making our servers start using mode 0600. So again: if the mode matters to your script, make sure your script sets the mode itself to avoid problems.</p>
<p><em>Followup: the PHP developers changed how PHP works in response to our bug report, forcing PHP to use mode 0644 for files created with move_uploaded_file().</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/php-upload-permissions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Automatically selecting the wrong wireless network can cause e-mail problems</title>
		<link>http://blog.tigertech.net/posts/automatically-selecting-the-wrong-wireless-network-can-cause-e-mail-problems/</link>
		<comments>http://blog.tigertech.net/posts/automatically-selecting-the-wrong-wireless-network-can-cause-e-mail-problems/#comments</comments>
		<pubDate>Thu, 03 May 2007 23:46:33 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
		
		<category><![CDATA[Tales From the Support Team]]></category>

		<category><![CDATA[e-mail]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/42/</guid>
		<description><![CDATA[We had an interesting support phone call today from a customer who was having trouble sending and receiving e-mail. She was using a wireless connection today. She had also been using a wireless connection yesterday, and it had been working fine then. Before calling us she had tried restarting her computer (as we recommend for [...]]]></description>
			<content:encoded><![CDATA[<p>We had an interesting support phone call today from a customer who was having trouble sending and receiving e-mail. She was using a wireless connection today. She had also been using a wireless connection yesterday, and it had been working fine then. Before calling us she had tried restarting her computer (as we recommend for most e-mail problems), but that didn&#8217;t seem to fix the problem.</p>
<p><span id="more-42"></span></p>
<p>After doing a bit of diagnostics, it turned out that the problem was that her computer had selected a neighbor&#8217;s wireless network after she rebooted. This different network blocked the necessary e-mail ports, so she couldn&#8217;t do e-mail. None of this was obvious until we started examining her IP address. She solved the problem by plugging her computer into a wired Ethernet port on her router, rather than using the wireless connection. When she did this, she got a new IP address which belonged to a completely different network, and suddenly she could do e-mail again!</p>
<p>So if you are having intermittent wireless network problems, be sure to check which wireless network your computer is connecting to. Choosing the wrong network can cause problems for e-mail and (potentially) for other services too.</p>
<p>We offer <a href="http://support.tigertech.net/ip">a web page which displays your IP address and host name</a>. The final part of your host name is the network which are you using to connect to the Internet. For example, if your host name is <strong>c-71-205-218-196.hsd1.ca.comcast.net</strong>, then you are connecting to the Internet via Comcast.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/automatically-selecting-the-wrong-wireless-network-can-cause-e-mail-problems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to check your current IP address (and host name)</title>
		<link>http://blog.tigertech.net/posts/how-to-check-your-current-ip-address-and-host-name/</link>
		<comments>http://blog.tigertech.net/posts/how-to-check-your-current-ip-address-and-host-name/#comments</comments>
		<pubDate>Thu, 03 May 2007 23:05:09 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
		
		<category><![CDATA[Tales From the Support Team]]></category>

		<category><![CDATA[Useful Tips]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/how-to-check-your-current-ip-address-and-host-name/</guid>
		<description><![CDATA[To quickly determine your computer&#8217;s current IP address, simply visit http://support.tigertech.net/ip.
]]></description>
			<content:encoded><![CDATA[<p>To quickly determine your computer&#8217;s current IP address, simply visit <a href="http://support.tigertech.net/ip">http://support.tigertech.net/ip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/how-to-check-your-current-ip-address-and-host-name/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.367 seconds -->
