【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
2017/03/15(水) 00:41:22.79ID:ko4BTSP20
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 7
http://echo.2ch.net/test/read.cgi/tech/1478657006/

次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/11/08(水) 19:25:20.07ID:ZQcBC1OD0
>>892
開発を早急に進めるには独裁的な方法は良いと思うけど
PHPの場合は、未だに5系を使ってるのが多いようで
あまり急ぐ必要性もないのかなとも思う。
2017/11/08(水) 19:38:40.39ID:ToLSiZTza
6の失敗で様子見が長いのかな
5を使うのって
2017/11/08(水) 20:24:43.81ID:yXBCWp2w0
>>891
上位の言語は
仕事で使わざるを得ない状況になって
嫌いになったんじゃないの

Clojureとか仕事で使わないだろ
2017/11/08(水) 20:59:17.53ID:CdH0AkI70
5.x 系はもうセキュリティfixのみ。5.6以外は既にセキュリティ保守もされていない。
7.0も来月には保守に移行、とっとと、7..1系に移るべし。

http://php.net/supported-versions.php
2017/11/08(水) 21:06:09.41ID:yXBCWp2w0
>>891
Haskellの嫌われぶりも相当だな
前後のC/C++やJavaに比べたら
使用者人口が圧倒的に少ないだろうに
2017/11/08(水) 21:15:37.90ID:7RlofB9P0
>>891
いまいち見方がわからん
横の長さは何を表してるの?
2017/11/08(水) 22:37:46.88ID:sLplUZSS0
>>898
好かれてない度
2017/11/09(木) 01:20:29.97ID:2oYBDwYL0
webプログラマーの俺が思う、PHPの気に入らない点

関数の引数に法則性がない、せめてhaystackとneedleの順序ぐらいは統一してくれ
変数にグローバルスコープがない(いちいちオブジェクト化しないといけないのが鬱陶しい)
2017/11/09(木) 01:46:15.65ID:oTLZ7Zqm0
グローバル変数はできるかぎり使うな
2017/11/09(木) 07:05:11.47ID:pml0kuKU0
サーバーサイドだとPythonが今好まれてるってことなのか?
でもWebに特化してないし、作りやすいのかね
2017/11/09(木) 08:58:24.86ID:oTLZ7Zqm0
Pythonは機械学習で流行に乗ったけど
Webアプリは作りやすくない
2017/11/09(木) 09:44:04.31ID:Hn5JglTy0
PHPのようにサクっとはじめれないけど
用意するもの用意したらPHPより早く完成品出来上がるよ
まあぶっちゃけサーバサイドなんてなんでもいいんだけどね
2017/11/09(木) 17:38:26.86ID:Q2HXYGEY0
Ruby on Railsに精通してるやつのWebアプリデプロイするまでの尋常じゃないスピードにビビる
2017/11/09(木) 18:16:04.39ID:aoNmqvFxa
RubyはぶっちゃけいかにRailsを使いこなせるかの言語だからな
2017/11/10(金) 08:18:02.39ID:RkYtVGAQ0
>>852
IPがいる理由が謎
セキュリティ的に害悪でしかない
2017/11/10(金) 09:40:25.64ID:UzIhbEi50
固定IPでアクセスしている奴がいるのか?
そちらの方がセキュリティ感覚がないんじゃ
2017/11/10(金) 11:58:24.69ID:YGcZE3ch0
IP表示なんてしたらスレ乱立するのは目に見えてるからなあ
ID出す出さないで長年揉めてたぐらいだし
2017/11/10(金) 19:24:21.77ID:LsbUks3P0
IDがないと自演し放題で荒れるからな
レンサバとWebProgとかIDないけど
荒し簡単にNGできなくてイラつく
2017/11/13(月) 11:23:34.57ID:4mbmImdF0
>>902
Pythonはプログラミングを初めてやる人にはいい言語
Web向けのフレームワークもいくつかある
PHPみたいに1つの事をやるのに複数のやり方がある言語は
とっつきやすいが学習にとってはデメリットも多い

言語なんか手段に過ぎないからな
近所のコンビニへ買い物いくのにF1カーに乗るアホはおらんだろ
特定の言語にケチ付ける人ってたぶん仕事やらせたら手が遅いんだろうなって思う
2017/11/13(月) 11:27:09.02ID:4mbmImdF0
>>900
グローバルスコープはあるが使うわけがない
もしその理由が分からないなら相当ヤバいと思う

グローバルスコープ汚染しまくる言語って大昔のperlや
アホの書いたJavaScriptのイメージが強いが
どの言語出身?
2017/11/14(火) 00:49:07.85ID:Cwk2PbMg0
phpdbgをみんな使ってる?
2017/11/16(木) 20:26:54.97ID:daoo5ECaa
久しぶりに紀伊國屋に行ったら
PHPとPythonの本棚におけるシェアが増えて、Rubyが減っていました
PHPの場所は一時はかなり減っていましたが、大分盛り返した様子です
Pythonの流行はあきらかに機械学習の興隆と連動しています
ウェブではまだまだPHPが存在感を発揮していくのでしょうか?
2017/11/16(木) 21:14:09.06ID:0WmOdyh+0
WebならPHPが一番多いよ
2017/11/16(木) 22:59:14.51ID:daoo5ECaa
Pythonもしていますが、定数がなかったり、
オブジェクトのメソッドの第一引数がオブジェクト自身だったりと
いまいちモダンじゃないですよね
PHPは節操なく流行りを取り入れる姿勢なので、
モダン性が保たれているところはありますね
2017/11/16(木) 23:28:54.07ID:0WmOdyh+0
いやPythonの方がキレイな言語だろ
たしかにselfだらけなのは冗長だと思うが
2017/11/16(木) 23:34:30.35ID:lNSovIGo0
プラグマティック
[形動]実利的。実際的。実用主義的。実利主義的。
2017/11/16(木) 23:45:25.89ID:H4f2B3nT0
Pythonもなんちゃってオブジェクト指向だからPHPといいお友達だよ
2017/11/16(木) 23:51:10.19ID:EIKDxuPB0
webプログラミングやるなら
一度はPHPを勉強して損はないと思う
2017/11/17(金) 00:03:09.52ID:Fyg+unP40
JAVA、C#で徹底的に冗長性排除したのに
再び冗長性のあるプログラミング言語が興隆してくるあたり
人間の堕落さが垣間見れる
2017/11/17(金) 00:21:03.83ID:Geoynnp60
>>921
ナイスジョーク
2017/11/17(金) 01:03:42.02ID:5LcvEdL4a
タチの悪いジョークだなぁ
2017/11/17(金) 01:09:05.80ID:XOzbrcQ20
Javaの方が冗長
2017/11/17(金) 01:18:51.27ID:ma/QnAue0
「太子。人間、孤独であるよりは悪とともにあったほうがよいとみえるな」
2017/11/17(金) 01:47:17.15ID:kCNvi1ria
>>920
ガバガバ感を弁えるためにな
2017/11/17(金) 13:10:05.05ID:lGyDcZb2a
PHP以外の言語は、ある機能を使いたかった時に
この関数が含まれているパッケージは〜とか、
いちいち調べなきゃいけないのが面倒くさいと思っていましたが
パッケージをクラス、関数をメソッドくらいの感覚で考えたら
そんなに面倒くさくないと気づきました
2017/11/17(金) 14:52:01.73ID:jmNY7gbT0
PHPは自分さえしっかりしてれば(スキルがあれば)エレガントに安全に書ける言語だと思うよ
だから個人でWebやる場合、そういう自信があるなら有力な選択肢だと思う

ただ仕事などチームでやる場合、糞コード生産しそうな奴がまじってるとPHPは
選択したくないかも(必ずいる)
929デフォルトの名無しさん (ワッチョイ 1dc9-IKRN)
垢版 |
2017/11/18(土) 14:42:47.14ID:2G8xzSWu0
PHPは書くと楽な言語であって、読むのは最悪。他人が絡むから。
2017/11/18(土) 18:17:30.20ID:STVf0d+x0
>>929
プログラムって大体そういうものだ
2017/11/18(土) 21:10:40.83ID:nUbPTPuI0
だから差が出ないようにコーディング規約とかあるんやで
932デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/18(土) 23:59:16.26ID:AvOAupbn0
年収500万でPHPのソースレビュー要員募集してるところもあるくらい
規約は徹底したほうがいい
規模でかいなら尚更
2017/11/19(日) 22:41:33.65ID:t82UL78Aa
>>736の件ですが
なんとGoはオブジェクト指向言語じゃないと分かりました
あくまでモダンCであってモダン言語と呼ぶには苦しい感じがします
2017/11/19(日) 23:44:09.71ID:MOlyybMm0
モダン=オブジェクト指向みたいになっとるがな
935デフォルトの名無しさん (ワッチョイ 1dc9-IKRN)
垢版 |
2017/11/20(月) 00:27:23.79ID:izNCqxH/0
どっちゃもいけるC++やPHPみたいな言語が、適材適所で使えて超便利。
2017/11/20(月) 09:21:45.62ID:5CA8WQiUM
AWS Lambdaでネイティブサポートする言語に
PHPが入っていないのって何故でしょうか?

GoとRubyは次にサポートする言語の投票対象になってましたが
PHPは入ってませんでした
2017/11/20(月) 10:34:23.37ID:Jkag+4y4a
オブジェクト指向と関数型を両方できるのが今のモダン言語でしょう
2017/11/20(月) 12:09:37.89ID:m3rw4xgt0
Scalaとかな
2017/11/20(月) 12:16:46.46ID:L+bcHflj0
関数型言語を学んだことないんだけど
学ぶとどんないいことがある?
2017/11/20(月) 17:53:01.40ID:jMZlCBbia
・むやみやたらに変数に再代入しなくなる
・参照透過性や副作用に気をつけるようになる
・小さな汎用関数を組み合わせて目的の処理を作り上げるのが楽しい
・汎用とまでは言わなくとも関数内で無名関数作って処理分離させるのが楽しい
・楽しいだけじゃなくそれぞれが細かく独立してるので保守しやすい
・宣言的に書けるため見通しがスッキリする
・大抵の場合で関数呼び出しのオーバーヘッドを気にする必要がないことに気づく
・いまいち使い道のわからなかったarray_map, array_filter, array_reduceあたりを息を吐くように使うようになる
・ただし大量の配列をmapしてfilterしてってやるのは遅延評価じゃないPHPではオススメしない
2017/11/20(月) 18:22:48.01ID:QCK988O10
手続き型より関数型に寄ってる言語は触った程度しか経験ないけど, 関数型のメリットは型システムとの関わりが強いことだと思ってる
この辺は上の宣言的に書けるとかその辺か

型無しラムダ?知らんな

あとPHPは型システムが極めて貧弱貧弱ゥなのがアレ
2017/11/20(月) 23:43:49.46ID:Qkk3FtfL0
業務中に少し行き詰ったので質問。サーバーPCの環境はwin32でPHP5.6、XAMPP上で動いてる
これを同一ネットワーク内の別PCでアクセスして、サーバーPC上のファイルをデスクトップ上に受け取りたい

単純にcopy関数を使っただけだと、access deniedで怒られたので、サーバーPC上のディレクトリに権限を
与えてみたが、これも駄目

php.iniのallow_file_uploadedなんかはすべてonにしてるだけど、どうやったらアクセス制限で弾かれずに
複写できる?
2017/11/20(月) 23:51:56.67ID:8KCSU74o0
>>942
コンテンツタイプを指定してストリームで受けとったら?
2017/11/20(月) 23:52:29.59ID:Qkk3FtfL0
そのファイルはxlsファイルで何十もある。ただ、ダウンロードするだけならheader関数で制御すればいいんだけど、
エクセルマクロをダウンロードしてから、それを一通り走査して値を代入する(図表も入ってるからPHPExcelは使えない)

流れとしては
サーバーPC上で元ファイルを複製

複製したファイルをローカル環境上に配置(Desktop/固定フォルダ/タイムスタンプ/hogehoge1.xls)

必要数を配置したら、xlsmファイルをダウンロード

xlsmファイル上のVBAマクロが動き、配置したxlsファイルに値を出力(図表が混じってるので、PHP_Excelが使えない)

こういう動きをさせたいので
2017/11/20(月) 23:56:13.25ID:Qkk3FtfL0
>>943
ありがとう、ストリームについて調べてみる
2017/11/21(火) 00:06:48.02ID:ZEWdnSYv0
サーバ側のアプリケーションを作りたいのかクライアント側のアプリケーションを作りたいのか両方なのか
更にクライアント側でVBAを動かす処理系はどうするのか(Excel起動するの?)とか
2017/11/21(火) 00:36:29.65ID:nHtR4tFla
>>936
PHPは他言語の機能を積極的にパクってきましたが
PHPが他言語にパクられた機能というのは、特に思い当たりません
そういうところで軽視されがちなのは、
そんなPHPのオリジナリティのなさが原因ではないかと思います
2017/11/21(火) 00:41:02.65ID:tVCufCc10
当初ローカル環境だけで作ってたから、いざサーバーに載せ替えたときに、クライアント側で
ファイルの複製ができなくなったって所。ローカルだけだとPHPもVBAもちゃんと動いてたんだけど

Excelはクライアント側で起動させる
2017/11/22(水) 01:17:28.95ID:wJEVnqEH0
サーバサイドのコードもクライアントサイドのコードも書いて, どっちもローカルの環境では動いたけど
サーバサイドのコードを実環境にデプロイしたらサーバサイドのコードは正しく動くけどクライアントサイドのコードは正しく動かなかったってこと?
950デフォルトの名無しさん (ワッチョイ 82d2-570e)
垢版 |
2017/11/22(水) 03:13:02.56ID:X0CV9K0Z0
禅問答か
2017/11/22(水) 03:36:33.52ID:Fja20xY70
早口言葉
2017/11/22(水) 03:39:53.11ID:wJEVnqEH0
対話的インターフェイス
2017/11/22(水) 15:50:49.68ID:HyQAr+nB0
ローカルの環境の中に、仮想OSをインストールして、スコープやパーミッションの相違を見落とすのを防いでおくのが吉
2017/11/22(水) 23:04:57.76ID:12pr/mHg0
うちの会社でもDockerやらAWSのサービス使って
Blue-Greenデプロイとかしたいけど
まだ手が出せてない
なんか難しそうだし

ローカルのPHP開発環境としてならDockerは使ってるんだが
2017/11/23(木) 00:48:07.37ID:0zddhcTM0
去年秋にリリースしたサービスはDocker使ってるけどノントラブルだな
それほどアクセスないからってのもあるだろうが
2017/11/24(金) 19:41:14.05ID:DaQyC7B30
質問です。
最新版のSQLiteを試してみたいのですが、やり方を知っている人は居ますか?

環境はPHP7.1.8+SQLite3.15.1(今年9月時点でのxampp最新版)で、
試しにSQLite3.21.0のDLLを公式からDLして差し替えてみましたが動作しませんでした。


他詳細を知りたければ以下で。
http://mevius.2ch.net/test/read.cgi/db/1345121656/646
2017/11/24(金) 21:22:21.08ID:NGnFjFYxa
自分でビルドできる前提?
2017/11/24(金) 21:26:05.17ID:9sTMSHCv0
XAMPPでのがしんどいよなぁ…
まさか開発用ってわけじゃなく勉強用だよね?
検証してくれる優しい人出るまで待つしかなさそう
2017/11/24(金) 21:52:04.12ID:DaQyC7B30
>>957
いや、出来ない前提。というかしたくない。
自分でしないと駄目なのか?ググッたらそのまま使えるみたいな人も居たんだが。
https://www.dbonline.jp/sqliteinstall/install/index3.html
なおSystem32に置いても駄目でした。
ちなみにxampp on Windowsね。(すまんこれを言い忘れていた、重要だったかも?)
ビルドするにしてもどうせVCだし、同じバイナリが出来るはずだから意味無いと思っている。


>>958
勉強用だけどAGPLv3でリリースするよ。それなりに動く物を作るつもり。
プログラミング初心者ではないから。
xamppってまずい?一番簡単だったからこれにしたが、
(というか最初はこれくらい簡単でないと無理)
今ならvirtualBoxとかに鞍替えできるけど、そっちの方がいい?

まあそもそもSQLiteのATTACHが異常に遅いのが問題で、
それが無ければ旧版で(つまりxamppで)問題なかったんだけどね。
2017/11/24(金) 21:57:17.25ID:C3/IvF2B0
XAMPP使わないからよく分からんのだけど, 同梱のphp_sqlite3.dllとかphp_pdo_sqlite3.dllのサイズを見る限りSQLite3は静的リンクされてるんじゃないのか?
ちゃんとDLLの中身見れば静的リンクされてるか動的リンクされてるかは分かるけど, 静的リンクされてるなら自分でリビルドが必要だよ
2017/11/24(金) 21:59:01.78ID:lD80x27g0
>>959
そのサイトで「使える」と言っているのは、PHPでSQLiteの利用が出来るというだけで、
実際にSQL書いていく時はファイルオープン、ファイルクローズなどやらないと行けないはず
その辺は必要箇所を見つけて自分で直さないと行けないのではないかな?
PHPでSQLを利用するサンプルを一度移植してみると分かると思う。
2017/11/24(金) 22:27:59.22ID:DaQyC7B30
>>960
Goみたいなキチガイじゃなければ、静的リンクなんてありえないと思うが。
また、静的リンクだったら差し替えても反応するはずが無く、そのまま3.15.1がリンクされっぱなしになるはずだが、
phpinfoで見ると消えてしまう。だから反応はしている。つまり動的リンクのはず。

サイズはほぼ同じ。
3.15.1(859,648Bytes)
3.21.0(852,754Bytes)
なお俺が使っているのは32bit版。


>>961
既に言ったが俺はプログラミング初心者ではないからその辺は分かっているし、
もう既に動かしている。
なおそのサイトは結構いいと思うよ。SQLはそこで基礎を確認した。
2017/11/25(土) 00:07:20.86ID:SR+igXjo0
>>962
残念だけどちゃんと調べたらソースごとバンドルされてるから静的ビルドよ
https://github.com/php/php-src/tree/master/ext/sqlite3/libsqlite
2017/11/25(土) 00:11:53.87ID:SR+igXjo0
静的ビルドじゃねぇな, リンクでもないし静的に組み込まれてる
2017/11/25(土) 00:49:57.60ID:hdwDPoQO0
>>964
違うぞ。てかお前動的リンクと静的リンクの違い分かってないだろ。
ソースがそこにある=パッケージ内でビルドされている、であって、動的/静的は関係ない。
自分でDLLを作るとき、プロジェクト内にソースは当然あるだろ。


こっちも調べた。DLLを直接確認したらget_module関数が無い。それでググったら以下が出た。
http://www.php-cpp.com/documentation/loading-extensions

要するに通常のDLLでは無く、Zendのラッパ(ではないが)が必要で、そこからアドオンとして組み込んでる。
だからphp.iniを見て動的に組み込む。
FireFoxとかのプラグインと同じ構造(のはず)

Zendからヘッダを入手してビルドするのは面倒なので、
誰か既にビルド済みなのを探しているのだが(これがwindowsの利点だし)、今のところない。
誰か発見したらよろしく。
なおReleaseNoteを見る限り、ATTACH自体はまだ枯れてないので可能性がある。
> 2. Allow ATTACH and DETACH commands to work inside of a transaction.
> http://www.sqlite.org/releaselog/3_21_0.html
ただまあそれ以前に、ATTACHの仕方によっては遅くならないようなので、それも確認中。
2017/11/25(土) 01:43:46.47ID:hdwDPoQO0
ちなみにバイナリはあった。
http://windows.php.net/qa/

そしてPHP7.1.12RC1のdllと差し替えたら反応はするのだがSQLite自体は3.15.1のまま。
おそらくPHP7.1系はSQLite3.15.1なのだろう。

ならばとPHP7.2.0RC6も試したが、
こちらはVC15のランタイムをインストールした際「再起動が必要」と出たが無視しているので結果は未定。
再起動無しの状態では使えない。(読みに行くがリンクできない関数があって落ちる)
2017/11/25(土) 02:08:17.99ID:SR+igXjo0
理解してないのはお前だよ

php_sqlite3.dllやphp_pdo_sqlite.dllは実行時にPHPにロードされるいわゆるモジュールだが, こいつらとsqlite3.dllは同一じゃない
sqlite3.cのソースコードを使ってSQLiteはこれらのモジュールに「静的に」組み込まれている

sqlite3.dllならPHPから独立だろうがphp_sqlite3.dllはphp7ts.dllに依存しているからその辺で読めないんじゃないの
ちゃんとエラーログ見ればモジュール読めないってPHP Startup Error出てるだろうよ
2017/11/25(土) 08:23:48.80ID:hdwDPoQO0
>>967
> 実行時にPHPにロードされる
> 「静的に」
馬鹿乙。つかマジでもうちょっとちゃんと勉強しろ。
PHPerは馬鹿だとは聞いたが、なるほどこれでは馬鹿にされるだろうさ。
2017/11/25(土) 12:15:37.58ID:hVOq/yrX0
どっちにせよ、こんなことで時間潰れるの勿体ない
最初からVirtualBoxとかでやった方がいいと思うな
2017/11/25(土) 12:39:50.58ID:hdwDPoQO0
>>969
いや、virtualBoxの方がいいのか?
Unixにポーティングしたらそこで問題がー、って人も居るみたいだけど。
http://torhamzedd.halteria.com/2010/02/xamppwebvmplayer.html
まあ言っていることはごもっともなんだが。xamppで実運用する可能性は皆無だし。

なおいろいろ試した結果、ATTACHの問題というよりは特性であり、
こちらのプログラムで改善/回避できそうな雰囲気なので、環境が悪いわけではなさそうだ。
まだ詳細を詰め切れていないが。
2017/11/25(土) 14:36:44.48ID:hdwDPoQO0
なおATTACHについては自己解決した。詳細は以下参照。
http://mevius.2ch.net/test/read.cgi/db/1345121656/647

これだと最新版で改善されている可能性もあり、試すべきだが、
再起動するのはかなり面倒なのでとりあえず放置する。(後日結果を報告するかも)
対応してくれた人はありがとう。
2017/11/27(月) 12:53:10.05ID:nNid/MSoM
用途をみるに、sqliteを最新にする必要があるのか謎。
2017/11/27(月) 12:54:20.73ID:nNid/MSoM
あー最新版の修正目当てか。失礼
2017/11/27(月) 17:21:44.79ID:hfMnpxmx0
>>968
痛々しいわ

SQLite関数を使う上での依存関係は

PHPコア -> php_sqlite3モジュール -> SQLite3ライブラリ

なんだから,

PHPコア -> php_sqlite3モジュール : 実行時にphp.iniの設定を見てロード
php_sqlite3モジュール -> SQLite3ライブラリ : php_sqlite3モジュールのビルド時に静的に組み込み

で何も矛盾してない
最初から最後までSQLite3ライブラリの最新版を使いたいなら「php_sqlite3モジュールを新しいSQLite3ライブラリを使って再ビルドしろ」が結論
2017/11/27(月) 19:07:02.53ID:pbeBNwkp0
>>973
3.21.0で追加された、transaction内でのATTACH/DETACHがあれば、
http://mevius.2ch.net/test/read.cgi/db/1345121656/663
に書いたtempの手法が使えるようになる。
ただ、今は、それ以前に、file_put_contentsでarchive用のjsonファイルを静的に作成する方法を試している。
速度は10倍ほど出ている。(DBに書くと40-60msかかるが、ファイルなら3-4ms)

今は本当にこれでいけるか、こちらに一本化すべきかを考えているところ。
(archiveは動的側面が全くないはずなのでいけるはずだが、運用上問題がないか?)


>>974
> 痛々しいわ
お前がな。最近この手の馬鹿は増えたが。
まあ永久に無知なままでいろ。
2017/11/27(月) 21:04:12.30ID:hfMnpxmx0
>>975
誤解してるわけでもなさそうだしまぁいいや
実際ビルドし直さずに最新版使えるならそれがベストではあるしな
是非成功させて勉強させてくれ
977デフォルトの名無しさん (ワッチョイ 6323-nSRQ)
垢版 |
2017/12/14(木) 18:31:35.65ID:O42iwrkx0
php pdo mysql について質問です。
ローカルのxampp環境でinsert時にexceptionを吐いているのですが、サーバーのlinux環境ではexceptionを吐きません。

接続直後に
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
としているのですが、環境によってexceptionをthrowしない場合ってあるのでしょうか?

この問題は非常に質が悪く、$stmt->errorCode();で取得できませんし、$stmt->rowCount();で1が返ってきてしまいます。
エラーログには出力されているようです。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'hogehoge' in ...

どうやったらexceptionをthrowしてくれるようにできるのでしょうか?
また、throwは諦める場合、エラーを検出したいのですがどうやったら良いでしょうか?
978デフォルトの名無しさん (ワッチョイ 6323-nSRQ)
垢版 |
2017/12/14(木) 18:54:42.13ID:O42iwrkx0
なんか分かった気がします。
prepare? execute? がエラーを throw していたのですが、
それらをコールしている関数の外で try catch していたので、そこまで到達していなかったようです。
php.ini の設定なんですかね?
とりあえず自己解決しました。
ありがとうございました。
2017/12/14(木) 21:55:30.52ID:c3uOfk7qM
解決したからいいけど、XAMPP環境での開発はお勧めできん
WindowsでもMacでもDocker使うなり仮想つかうなりで、
本番環境とほぼ同じ状態で開発しないと
PHPのバージョンや組み込まれてるライブラリ、php.iniもすべて合わせれば
そんなエラーで時間潰すこともまずなかろう
980デフォルトの名無しさん (オイコラミネオ MMb3-35vn)
垢版 |
2017/12/14(木) 23:08:01.53ID:kcFY4zVmM
phpのフレームワークにララベル使おうかと思ってるんだけど、なんか他に良いフレームワークってあるの?
2017/12/15(金) 00:18:58.55ID:zZ0+kx4X0
個人的にはLaravelが一番いいと思うよ
FuelPHPとかPhalconとか最近はあまり聞かなくなったな
982デフォルトの名無しさん (ワッチョイ 53c9-BImy)
垢版 |
2017/12/17(日) 12:52:10.72ID:hlhRQlj10
>>979

XAMPP全く関係ないじゃん。ヴァカなの?
2017/12/19(火) 01:55:46.54ID:lVjWNMP2a
WindowsのファイルシステムのエンコードはUTF-16 らしいですが
scandirで取得したファイル名はUTF-8になっています
これはPHPが内部で変換してるのでしょうか?
2017/12/19(火) 10:43:30.09ID:lVjWNMP2a
Win10のコマンドラインからPHPを実行してUTF-8の文字列を表示すると
文字化けせずに表示されました
Win7以前はSJISに変換してから表示しないと化けたはずです
Win10のコマンドラインのエンコードはUTF-8になったのでしょうか?
だとすれば、コマンドライン=SJIS、を前提にして書かれたコードは
問題が出てきますよね
現に出ているから調べ始めたのですが・・
2017/12/19(火) 12:01:10.63ID:lVjWNMP2a
バッチファイルからUTF-8文字列を出力するとやはり化けたので
WindowsではなくPHP側の問題かと思って検索したらありました

Windows版 PHP 7.1 で日本語パス(パス文字列のエンコーディング)が
対応されることによる影響
https://qiita.com/algo13/items/2810aacef69d6fb8fd0f
2017/12/19(火) 12:43:11.61ID:o48rTZ2B0
windows10が今手元にないからうまく答えれないけど、
コマンドラインでchcpってうってみて文字コード確認してみればいいんじゃない?
2017/12/19(火) 13:15:06.92ID:1yPg30uza
ありがとうございます
しっかり932って表示されました
2017/12/20(水) 09:16:36.60ID:+UrT0jgrM
>>982
はあ? あるじゃん
本番環境と開発環境の構成がずれててエラー起きてるんだから
2017/12/20(水) 13:31:42.83ID:Wkwa3Cn2a
自分もXAMPPを使っているのですが
MySQLのデフォルトがInnoDBになっていたのでそのまま使っていたのですが、
データベースが壊れました
innodb_force_recoveryオプションを使って修復してもまたすぐ壊れます
MyISAMの時はmyisamchkにかければそれで直っていたのに。
InnoDBは同時アクセス対策の機能が豊富ですが
同時アクセスがさほど想定されない場合は
シンプルで堅牢なMyISAMを使うべきなのでしょうか?
2017/12/20(水) 13:38:21.86ID:xHqi669x0
>さほど想定されない

dbの形式以前に、ロックをしない構文構造に問題があるのでは?
2017/12/20(水) 13:45:16.71ID:Wkwa3Cn2a
ロックですか
していませんでした
MyISAMの時と同じ書き方をしていました
InnoDBではそういうのがいるんですね
ありがとうございます
2017/12/20(水) 14:51:09.36ID:Xzv3JYGc0
InnoDBが壊れるってそうそう起きないだろ
ロック云々の人為的ミスで壊れるなんて今はまずないと思うけど
そのXAMPPのMySQLのバージョンいくつか知らんが、
5.1とか使ってるなら5.7に上げるのがいいと思うが
MyISAMにするってのはかなりズレてると思うよ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況