SoftException in Application.cpp:544: Directory “/path/dir” is writeable by group
Full error message: SoftException in Application.cpp:544: Directory “/path/to/directory” is writeable by group
The error apeared in cpanel logs at a hosting company and was related to a directory I created via ftp and where I tried to run some php script. When accessing the script from the web browser i got the error “500 Internal Server Error”
The problem is that Apache 2.0 server doesn’t allow in some cases (i don’t know these cases yet) that the directories created with write access rights set to all unless it’s set by the same unix user as the user running apache process. In order to fix this we need to create the folder from the same user as apache user. To do this we need to create the folder or to change the access rights from php.
The fix is to upload a small php file with the following code:
<?php
chmod("./dir", 0755);
?>
After we set the access right on “dir” to 777 we run the php script then the error should not appear anymore.
Importing a MySQL data file using phpMyAdmin results in incomplete data in MySQL
I tried moving all my databases from MySQL 4.1 to MySQL 5.1 on Windows and since I had some InnoDB tables I could not just copy the data files between MySQL Server versions (from C:\Documents and Settings\All Users\Application Data\MySQL\MySQL 4.1\data\ to C:\Documents and Settings\All Users\Application Data\MySQL\MySQL 5.1\data\).
So, after I exported the data from the old MySQL Server version I tried importing it to the MySQL 5.1 using phpMyAdmin.
The file to import was 42MB in size, so I had to set some PHP configuration variables (in php.ini file) to greater values:
post_max_size = 64M upload_max_filesize = 64M
At first it looked like the phpMyAdmin import script entered a loop or something, as it wouldn’t stop even after running for several minutes and, as I was looking into the data files it was producing, no new files appeared. It was like it blocked on a table with a large number of records, which didn’t make any sense. Then I restarted the Apache server and I tried the import all over again. The same thing was happening. I finally decided to let it run for more time and the script finally stopped. But the data imported was incomplete; a part of the records in the large table I thought script blocked on, and every table and database from there on were missing, with no PHP or MySQL error returned.
Then I thought the script needed even more time to run, so I increased the value of the PHP configuration variable max_execution_time, but with the same result.
The solution. It seems that the execution time limit for the import script in phpMyAdmin is defined by the variable $cfg['ExecTimeLimit'] in <path_to_phpMyAdmin>/libraries/config.default.php and the value of this variable should be a lot greater than its default value of 300 seconds when importing a great amount of data. In my case it needed about an hour (3600 seconds) to complete. So you have to set this variable depending on the quantity of data you are importing.
You might also need to set the MySQL configuration variable max_allowed_packet (in my case, in C:\Program Files\MySQL\MySQL Server 5.1\my.ini) to a greater value, if you have large queries in the data file you want to import, for avoiding MySQL error 2006, ‘mysql server has gone away’.
How to receive a failure notice when the recipient cannot be reached after sending an email using the PHP mail() function
I could not receive a failure notice when sending email to an email address that does not exist ($to_address), using this code:
$subject = "Email subject"; $message = "line1\r\nline2\r\nline3"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $headers .= "To: <$to_email>\r\n"; $headers .= "From: Me <$my_email_address>\r\n"; $headers .= "Return-Path: <$my_return_email_address>r\n"; mail($to_email, $subject, $message, $headers);
The problem was that the email address I wanted to receive the failure notices to ($my_return_email_address) was not the same as the value of the configuration option sendmail_from in the php.ini file (Apache web server installed on a machine with the Windows Professional operating system). So the failure notices were sent to the sendmail_from email address if this was an existing address, instead of the email address specified in the Return-path header of the email.
The solution is replacing the lines:
$headers .= "Return-Path: <$my_return_email_address>r\n"; mail($to_email, $subject, $message, $headers);
with:
// when the PHP server runs on Windows ini_set(sendmail_from, $my_return_email_address); mail($to_email, $subject, $message, $headers); ini_restore(sendmail_from);
// when the PHP server runs on UNIX mail($to_email, addslashes($subject), $message, $headers, "-r $my_return_email_address");
This means that, before sending the email, we set the value of the sendmail_from configuration option to $my_return_email_address and we restore the default value of the configuration option after the email is sent.
An XSLT stylesheet does not have an XML mimetype:
Full error message: Error loading stylesheet: An XSLT stylesheet does not have an XML mimetype:
Error occured on Firefox 2.0 when working with XML, XSLT.
xml file:
<?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/xsl" href="product-list.xslt"?> <f>PRODUCT DETAILS</f>
xslt file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>aaa</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="alert('x');">
<value-of select="f"/>
</body>
</html>
</template>
</stylesheet>
The error occurs because the web server (in my case Apache) had this entry in the mime.types file:
text/xml xml xsl
The fix in my case is:
Change extenstion from xslt to xls on the stylesheet file or add xslt to the text/xml entry in mime.types file in Apache.
