When migrating a PHP script from PHP 5.2 to PHP 5.3, I've stumbled to the following problem: The general purpose of the script is data mining. I have a procedure inside that adds data to the MySQL server. Since it is really repetitive, I've rewritten it (a while ago) to use MySQLi, in particular prepared statements, since there are a total of 3 possible queries to perform. Anyway, now, on the PHP 5.3 server, the script is crashing on the following line:
$prepCheck is created with
$prepCheck = mysqli_prepare($con, $checkQuery) or die("Error");. The query runs fine on the MySQL server ($checkQuery, that is) and the PHP code was working, too, on the previous server.
Running the script with
strace didn't reveal anything, since the last thing in it is the system call for
echo "Execute";, which is
29936 19:44:18 write(1, "Executen", 8) = 8.
The connection object is not
FALSE, and even if it was, it should fail with another error, right?
Here comes the weirdest part: This procedure does not fail when I run the script, limiting the number of pages visited and the script completes successfully. However, when I set a higher limit, it fails, always on the first call to this procedure, and precisely on this line.
If anyone has any suggestions what could be causing this, they would be deeply appreciated.
I can paste code if anyone needs to see a larger picture, but the procedure is very long and boring to death (may be that's why the script is failing :).
Here is how the script starts:
error_reporting(E_ALL); ini_set('display_errors', '1');.
No error is reported besides the 'magical'
Segmentation fault. I'm not using APC.
Not sure if it's relevant, but I'm using CLI to run the script, not a web-interface.
PHP version is 5.3.8, MySQL version is 5.1.56. The memory limit is set to 64MB.
EDIT: The procedure failing + some of the other code is uploaded here: http://codepad.org/KkZTxttQ. The whole file is huge and ugly, and I believe irrelevant, so I'm not posting it for now. The line that's failing is 113.